{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Catching Hackers\n",
    "For this chapter, we will be simulating the data we will work with using the [`login_attempt_simulator` package](https://github.com/stefmolin/login-attempt-simulator). The simulator needs to generate random numbers from various distributions. Here is an example of each of them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0.95, 'Understanding the distributions used for the simulation')"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x720 with 5 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import scipy.stats as stats\n",
    "\n",
    "fig, axes = plt.subplots(2, 3, figsize=(15, 10))\n",
    "axes = axes.flatten()\n",
    "fig.delaxes(axes[-2])\n",
    "\n",
    "# triangular distribution defined by min (a), max (b) and mode\n",
    "a, b, mode = 1.5, 5, 2.75\n",
    "peak = 2 / (b - a)# peak of PDF is at 2/(b-a)\n",
    "axes[0].plot([a, mode, b], [0, peak, 0])\n",
    "axes[0].set_title('Triangular PDF')\n",
    "axes[0].set_xlabel('x')\n",
    "axes[0].set_ylabel('density')\n",
    "axes[0].annotate('min', xy=(a, 0), xytext=(a + 1, 0), arrowprops=dict(arrowstyle='->'))\n",
    "axes[0].annotate('max', xy=(b, 0), xytext=(b - 1.25, 0), arrowprops=dict(arrowstyle='->'))\n",
    "axes[0].annotate('peak', xy=(mode, peak), xytext=(mode - 0.2, peak - 0.2), arrowprops=dict(arrowstyle='->'))\n",
    "\n",
    "# uniform distribution defined by min (a) and max (b)\n",
    "a, b = 0, 1\n",
    "peak = 1 / (b - a)\n",
    "axes[1].plot([a, a, b, b], [0, peak, peak, 0])\n",
    "axes[1].set_title('Uniform PDF')\n",
    "axes[1].set_ylabel('density')\n",
    "axes[1].set_xlabel('x')\n",
    "axes[1].annotate('min', xy=(a, peak), xytext=(a + 0.2, peak - 0.2), arrowprops=dict(arrowstyle='->'))\n",
    "axes[1].annotate('max', xy=(b, peak), xytext=(b - 0.3, peak - 0.2), arrowprops=dict(arrowstyle='->'))\n",
    "axes[1].set_ylim(0, 1.5)\n",
    "\n",
    "# gaussian\n",
    "mu, sigma = 1.01, 0.01\n",
    "x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)\n",
    "axes[2].plot(x, stats.norm.pdf(x, mu, sigma) / 100)\n",
    "axes[2].set_title('Gaussian PDF')\n",
    "axes[2].set_ylabel('density')\n",
    "axes[2].set_xlabel('x')\n",
    "axes[2].annotate(r'$\\mu$', xy=(mu, 0.4), xytext=(mu - 0.001, 0.3), arrowprops=dict(arrowstyle='->'))\n",
    "axes[2].annotate(\n",
    "    '', xy=(mu-sigma, 0.25), xytext=(mu + 0.01, 0.25),\n",
    "    arrowprops=dict(arrowstyle='|-|, widthB=0.5, widthA=0.5')\n",
    ")\n",
    "axes[2].annotate(r'$2\\sigma$', xy=(mu - 0.002, 0.22))\n",
    "\n",
    "# exponential\n",
    "x = np.linspace(0, 5, 100)\n",
    "axes[3].plot(x, stats.expon.pdf(x, scale=1/3))\n",
    "axes[3].set_title('Exponential PDF')\n",
    "axes[3].set_ylabel('density')\n",
    "axes[3].set_xlabel('x')\n",
    "axes[3].annotate(r'$\\lambda$ = 3', xy=(0, 3), xytext=(0.5, 2.8), arrowprops=dict(arrowstyle='->'))\n",
    "\n",
    "# Poisson PMF (probability mass function) because this is a discrete random variable\n",
    "x = np.arange(0, 10)\n",
    "axes[5].plot(x, stats.poisson.pmf(x, mu=3), linestyle='--', marker='o')\n",
    "axes[5].set_title('Poisson PMF')\n",
    "axes[5].set_ylabel('mass')\n",
    "axes[5].set_xlabel('x')\n",
    "axes[5].annotate(r'$\\lambda$ = 3', xy=(3, 0.225), xytext=(1.9, 0.2), arrowprops=dict(arrowstyle='->'))\n",
    "\n",
    "plt.suptitle('Understanding the distributions used for the simulation', fontsize=15, y=0.95)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Note: the Poisson distribution is discrete while the others are continuous. We use the Poisson distributions to model arrivals (users coming to login for this example). Discrete distributions have PMFs (probability mass functions) instead of PDFs.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `simulate.py` script can be run from the command line to run the simulation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "usage: simulate.py [-h] [-m] [-s SEED] [-u USERBASE] [-i IP] [-l LOG]\n",
      "                   [-hl HACKLOG]\n",
      "                   days start_date\n",
      "\n",
      "positional arguments:\n",
      "  days                  number of days to simulate from start\n",
      "  start_date            datetime to start in the form 'YYYY-MM-DD' or 'YYYY-\n",
      "                        MM-DD-HH'\n",
      "\n",
      "optional arguments:\n",
      "  -h, --help            show this help message and exit\n",
      "  -m, --make            make userbase\n",
      "  -s SEED, --seed SEED  set a seed for reproducibility\n",
      "  -u USERBASE, --userbase USERBASE\n",
      "                        file to write the userbase to\n",
      "  -i IP, --ip IP        file to write the user-ip address map to\n",
      "  -l LOG, --log LOG     file to write the attempt log to\n",
      "  -hl HACKLOG, --hacklog HACKLOG\n",
      "                        file to write the hack log to\n"
     ]
    }
   ],
   "source": [
    "!python simulate.py -h"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will simulate November 2018 using a seed of 0 and making the userbase:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[WARNING] [ simulate.py ] Creating new user base and mapping IP addresses to them.\n",
      "[INFO] [ simulate.py ] Simulating 30.0 days...\n",
      "[INFO] [ simulate.py ] Saving logs\n",
      "[INFO] [ simulate.py ] All done!\n"
     ]
    }
   ],
   "source": [
    "!python simulate.py -ms 0 30 \"2018-11-01\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setup"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "\n",
    "log = pd.read_csv('logs/log.csv', index_col='datetime', parse_dates=True)\n",
    "attacks = pd.read_csv(\n",
    "    'logs/attacks.csv',\n",
    "    converters={'start' : np.datetime64, 'end': np.datetime64}\n",
    ") # make start and end columns datetimes but not the index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Understanding the Data\n",
    "The login attempts recorded from the website look like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_ip</th>\n",
       "      <th>username</th>\n",
       "      <th>success</th>\n",
       "      <th>failure_reason</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>datetime</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:10:24.868560</th>\n",
       "      <td>142.89.86.32</td>\n",
       "      <td>vkim</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:50:36.191231</th>\n",
       "      <td>142.89.86.32</td>\n",
       "      <td>vkim</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 01:01:42.607900</th>\n",
       "      <td>53.218.180.231</td>\n",
       "      <td>ysmith</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 01:02:06.374218</th>\n",
       "      <td>53.218.180.231</td>\n",
       "      <td>ysmith</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 01:35:19.704392</th>\n",
       "      <td>53.218.180.231</td>\n",
       "      <td>ysmith</td>\n",
       "      <td>True</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                 source_ip username  success failure_reason\n",
       "datetime                                                                   \n",
       "2018-11-01 00:10:24.868560    142.89.86.32     vkim     True            NaN\n",
       "2018-11-01 00:50:36.191231    142.89.86.32     vkim     True            NaN\n",
       "2018-11-01 01:01:42.607900  53.218.180.231   ysmith     True            NaN\n",
       "2018-11-01 01:02:06.374218  53.218.180.231   ysmith     True            NaN\n",
       "2018-11-01 01:35:19.704392  53.218.180.231   ysmith     True            NaN"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The labeled data we have to research how to detect the attackers looks like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>start</th>\n",
       "      <th>end</th>\n",
       "      <th>source_ip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2018-11-01 10:44:29.667759</td>\n",
       "      <td>2018-11-01 10:48:37.667759</td>\n",
       "      <td>23.143.69.122</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2018-11-02 03:27:23.313068</td>\n",
       "      <td>2018-11-02 03:31:18.313068</td>\n",
       "      <td>141.20.164.200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2018-11-02 06:37:54.905352</td>\n",
       "      <td>2018-11-02 06:42:08.905352</td>\n",
       "      <td>200.115.24.107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2018-11-02 08:36:24.435229</td>\n",
       "      <td>2018-11-02 08:40:24.435229</td>\n",
       "      <td>207.119.101.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2018-11-02 11:34:18.719900</td>\n",
       "      <td>2018-11-02 11:34:39.719900</td>\n",
       "      <td>66.109.118.50</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                       start                        end       source_ip\n",
       "0 2018-11-01 10:44:29.667759 2018-11-01 10:48:37.667759   23.143.69.122\n",
       "1 2018-11-02 03:27:23.313068 2018-11-02 03:31:18.313068  141.20.164.200\n",
       "2 2018-11-02 06:37:54.905352 2018-11-02 06:42:08.905352  200.115.24.107\n",
       "3 2018-11-02 08:36:24.435229 2018-11-02 08:40:24.435229  207.119.101.16\n",
       "4 2018-11-02 11:34:18.719900 2018-11-02 11:34:39.719900   66.109.118.50"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "attacks.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We had 39 attacks in 9,338 attempts:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((39, 3), (9338, 4))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "attacks.shape, log.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What percentage of IP addresses were from attackers?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.13220338983050847"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "attacks.source_ip.nunique() / log.source_ip.nunique()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## EDA\n",
    "Can we find suspicious activity looking at hourly attempts to log in?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'attempts')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# attempts over time\n",
    "log.assign(attempts=1).attempts.resample('1H').sum().plot(\n",
    "    figsize=(15, 5), title='hourly attempts'\n",
    ")\n",
    "plt.xlabel('datetime')\n",
    "plt.ylabel('attempts')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How many attempts came from each IP address?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    295.000000\n",
       "mean      31.654237\n",
       "std       70.843718\n",
       "min        1.000000\n",
       "25%        3.000000\n",
       "50%        6.000000\n",
       "75%       11.000000\n",
       "max      258.000000\n",
       "Name: source_ip, dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log.source_ip.value_counts().describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What does the distribution of attempts per IP address look like?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0.98, 'Attempts per IP Address')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, figsize=(15, 5))\n",
    "log.source_ip.value_counts().plot(kind='box', ax=axes[0]).set_ylabel('attempts')\n",
    "log.source_ip.value_counts().plot(kind='hist', bins=50, ax=axes[1]).set_xlabel('attempts')\n",
    "fig.suptitle('Attempts per IP Address')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What percent of the top IP addresses are hackers?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9743589743589743"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_hackers = attacks.source_ip.shape[0]\n",
    "log.source_ip.value_counts().index[:num_hackers]\\\n",
    "    .isin(attacks.source_ip).sum() / num_hackers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What does the average hourly attempts per IP address look like over the time period?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'average hourly attempts per IP address')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# attempts per ip address\n",
    "log.assign(attempts=1).groupby('source_ip').attempts\\\n",
    "    .resample('1H').sum().unstack().mean()\\\n",
    "    .plot(figsize=(15, 5), title='average hourly attempts per IP address')\\\n",
    "    .set_ylabel('average hourly attempts per IP address')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What percent of the time was a hacker's attempt successful?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False    0.830297\n",
       "True     0.169703\n",
       "Name: success, dtype: float64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log[log.source_ip.isin(attacks.source_ip)]\\\n",
    "    .success.value_counts(normalize=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What percent of the time are valid users' attempts successful?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True     0.987304\n",
       "False    0.012696\n",
       "Name: success, dtype: float64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log[~log.source_ip.isin(attacks.source_ip)]\\\n",
    "    .success.value_counts(normalize=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Why is each group failing?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>failure_reason</th>\n",
       "      <th>error_wrong_password</th>\n",
       "      <th>error_wrong_username</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>is_hacker</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>False</th>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>True</th>\n",
       "      <td>2491</td>\n",
       "      <td>3889</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "failure_reason  error_wrong_password  error_wrong_username\n",
       "is_hacker                                                 \n",
       "False                             20                     1\n",
       "True                            2491                  3889"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.crosstab(\n",
    "    index=pd.Series(\n",
    "        log.source_ip.isin(attacks.source_ip), name='is_hacker'\n",
    "    ), columns=log.failure_reason\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How many times does a user try to log in per hour? Valid users don't make many mistakes with their credentials, so if the hackers make many attempts with many users, we flag it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'average hourly attempts per user')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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qj6zwHEQERERERFtOoVl9lT1DlW9JPh6CcDVAB5Q1OOVzfUU+5bXyx4GERERERERgCnN2RORYwE8EsD5Q25+nIhcJiL/JSLHTWM8RXj3N6/GL7/zTOxfc8oeChERERERUfHBnohsA/BvAP5KVRcHbr4EwDGq+ksA/gnA10ds45UicpGIXLR79+5iBzyh0y/7KQBgeZ3BHhERERERla/QYE9EuvADvc+p6r8P3q6qi6q6P/j6DABdETlsyP1OUdXjVfX4ww8/vMghT8zxFADQabHBKRERERERla/IbpwC4JMArlbVD464z/2C+0FETgjGc29RYyqSGwR7UvI4iIiIiIiIgGK7cT4BwIsBXCEilwY/exOAowFAVU8G8LsA/kxEHAArAF6gqlrgmArjBcGeV8/hExERERFRwxQW7KnqD5GQ6FLVkwCcVNQYpskJg72SB0JERERERIQpdePcDEwZp4LRHhERERERlY/BXk5MZo9VnEREREREVAUM9nLGOXtERERERFQFDPZyxjl7RERERERUBQz2cuYx2iMiIiIiogpgsJczVnESEREREVEVMNjLGbtxEhERERFRFTDYyxmrOImIiIiIqAoY7OWM3TiJiIiIiKgKGOzlTBnsERERERFRBTDYyxnLOImIiIiIqAoY7OWMiT0iIiIiIqoCBns545w9IiIiIiKqAgZ7OWOwR0REREREVcBgL2eM9YiIiIiIqAoY7OWMmT0iIiIiIqoCBns5YzdOIiIiIiKqAgZ7OeM6e0REREREVAUM9nLGzB4REREREVUBg72cMbNHRERERERVwGAvB56VzmNmj4iIiIiIqoDBXg56nhd+zW6cRERERERUBQz2cuC4dmaPwR4REREREZWPwV4Oem4/swfGekREREREVAEM9nLQczlnj4iIiIiIqoXBXg4cztkjIiIiIqKKYbCXg57DOXtERERERFQtDPZyYHfjZKxHRERERERVwGAvB3aDFmWHFiIiIiIiqgAGezmILL3gxdyRiIiIiIhoShjs5WDdZYMWIiIiIiKqFgZ7OXC49AIREREREVUMg70cRObsMbNHREREREQVwGAvB71IGWeJAyEiIiIiIgrEBnsi0hKR509rMHXVs8o42Y2TiIiIiIiqIDbYU1UPwGumNJbacpjZIyIiIiKiiklTxnmmiPy1iBwlIoeaf4WPrEbWOWeP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\n",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# attempts per user\n",
    "log.assign(attempts=1).groupby('username').attempts\\\n",
    "    .resample('1H').sum().unstack().mean()\\\n",
    "    .plot(figsize=(15, 5), title='average hourly attempts per user')\\\n",
    "    .set_ylabel('average hourly attempts per user')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Calculate metrics per IP address"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>failure_reason</th>\n",
       "      <th>attempts</th>\n",
       "      <th>error_wrong_password</th>\n",
       "      <th>error_wrong_username</th>\n",
       "      <th>success</th>\n",
       "      <th>success_rate</th>\n",
       "      <th>error_rate</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>source_ip</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>135.158.66.165</th>\n",
       "      <td>258</td>\n",
       "      <td>79</td>\n",
       "      <td>146</td>\n",
       "      <td>33</td>\n",
       "      <td>0.127907</td>\n",
       "      <td>0.872093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44.123.120.49</th>\n",
       "      <td>255</td>\n",
       "      <td>83</td>\n",
       "      <td>139</td>\n",
       "      <td>33</td>\n",
       "      <td>0.129412</td>\n",
       "      <td>0.870588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146.116.200.234</th>\n",
       "      <td>255</td>\n",
       "      <td>75</td>\n",
       "      <td>142</td>\n",
       "      <td>38</td>\n",
       "      <td>0.149020</td>\n",
       "      <td>0.850980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200.115.24.107</th>\n",
       "      <td>254</td>\n",
       "      <td>70</td>\n",
       "      <td>145</td>\n",
       "      <td>39</td>\n",
       "      <td>0.153543</td>\n",
       "      <td>0.846457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>121.25.210.210</th>\n",
       "      <td>253</td>\n",
       "      <td>76</td>\n",
       "      <td>143</td>\n",
       "      <td>34</td>\n",
       "      <td>0.134387</td>\n",
       "      <td>0.865613</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "failure_reason   attempts  error_wrong_password  error_wrong_username  \\\n",
       "source_ip                                                               \n",
       "135.158.66.165        258                    79                   146   \n",
       "44.123.120.49         255                    83                   139   \n",
       "146.116.200.234       255                    75                   142   \n",
       "200.115.24.107        254                    70                   145   \n",
       "121.25.210.210        253                    76                   143   \n",
       "\n",
       "failure_reason   success  success_rate  error_rate  \n",
       "source_ip                                           \n",
       "135.158.66.165        33      0.127907    0.872093  \n",
       "44.123.120.49         33      0.129412    0.870588  \n",
       "146.116.200.234       38      0.149020    0.850980  \n",
       "200.115.24.107        39      0.153543    0.846457  \n",
       "121.25.210.210        34      0.134387    0.865613  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pivot = pd.pivot_table(\n",
    "    log, values='success', index=log.source_ip, \n",
    "    columns=log.failure_reason.fillna('success'), \n",
    "    aggfunc='count', fill_value=0\n",
    ")\n",
    "pivot.insert(0, 'attempts', pivot.sum(axis=1))\n",
    "pivot = pivot.sort_values('attempts', ascending=False).assign(\n",
    "    success_rate=lambda x: x.success / x.attempts,\n",
    "    error_rate=lambda x: 1 - x.success_rate\n",
    ")\n",
    "pivot.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Most successful IP addresses:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>failure_reason</th>\n",
       "      <th>attempts</th>\n",
       "      <th>error_wrong_password</th>\n",
       "      <th>error_wrong_username</th>\n",
       "      <th>success</th>\n",
       "      <th>success_rate</th>\n",
       "      <th>error_rate</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>source_ip</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>174.192.13.18</th>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>128.154.159.196</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>167.46.157.15</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>196.30.106.19</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73.106.1.104</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "failure_reason   attempts  error_wrong_password  error_wrong_username  \\\n",
       "source_ip                                                               \n",
       "174.192.13.18           6                     0                     0   \n",
       "128.154.159.196         3                     0                     0   \n",
       "167.46.157.15           4                     0                     0   \n",
       "196.30.106.19           4                     0                     0   \n",
       "73.106.1.104            4                     0                     0   \n",
       "\n",
       "failure_reason   success  success_rate  error_rate  \n",
       "source_ip                                           \n",
       "174.192.13.18          6           1.0         0.0  \n",
       "128.154.159.196        3           1.0         0.0  \n",
       "167.46.157.15          4           1.0         0.0  \n",
       "196.30.106.19          4           1.0         0.0  \n",
       "73.106.1.104           4           1.0         0.0  "
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pivot.sort_values('success_rate', ascending=False).head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What looks out of place with the five-number summary?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>failure_reason</th>\n",
       "      <th>attempts</th>\n",
       "      <th>error_wrong_password</th>\n",
       "      <th>error_wrong_username</th>\n",
       "      <th>success</th>\n",
       "      <th>success_rate</th>\n",
       "      <th>error_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>295.000000</td>\n",
       "      <td>295.000000</td>\n",
       "      <td>295.000000</td>\n",
       "      <td>295.000000</td>\n",
       "      <td>295.000000</td>\n",
       "      <td>295.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>31.654237</td>\n",
       "      <td>8.511864</td>\n",
       "      <td>13.186441</td>\n",
       "      <td>9.955932</td>\n",
       "      <td>0.881996</td>\n",
       "      <td>0.118004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>70.843718</td>\n",
       "      <td>23.713117</td>\n",
       "      <td>36.971525</td>\n",
       "      <td>11.411062</td>\n",
       "      <td>0.281312</td>\n",
       "      <td>0.281312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.107692</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>11.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>258.000000</td>\n",
       "      <td>95.000000</td>\n",
       "      <td>146.000000</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.892308</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "failure_reason    attempts  error_wrong_password  error_wrong_username  \\\n",
       "count           295.000000            295.000000            295.000000   \n",
       "mean             31.654237              8.511864             13.186441   \n",
       "std              70.843718             23.713117             36.971525   \n",
       "min               1.000000              0.000000              0.000000   \n",
       "25%               3.000000              0.000000              0.000000   \n",
       "50%               6.000000              0.000000              0.000000   \n",
       "75%              11.000000              0.000000              0.000000   \n",
       "max             258.000000             95.000000            146.000000   \n",
       "\n",
       "failure_reason     success  success_rate  error_rate  \n",
       "count           295.000000    295.000000  295.000000  \n",
       "mean              9.955932      0.881996    0.118004  \n",
       "std              11.411062      0.281312    0.281312  \n",
       "min               1.000000      0.107692    0.000000  \n",
       "25%               3.000000      1.000000    0.000000  \n",
       "50%               6.000000      1.000000    0.000000  \n",
       "75%              10.000000      1.000000    0.000000  \n",
       "max              62.000000      1.000000    0.892308  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pivot.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Are there IP addresses being used with many distinct usernames?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     27.000000\n",
       "mean      10.925926\n",
       "std       48.783608\n",
       "min        1.000000\n",
       "25%        1.000000\n",
       "50%        1.000000\n",
       "75%        2.000000\n",
       "max      255.000000\n",
       "Name: username, dtype: float64"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log.groupby('source_ip').agg(\n",
    "    dict(username='nunique')\n",
    ").username.value_counts().describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visual Anomaly Detection\n",
    "We had a bimodal distribution of attempts per IP address--will we have two clusters when we plot successes vs. attempts by IP address:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x14901370>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pivot.plot(\n",
    "    kind='scatter', x='attempts', y='success', \n",
    "    title='successes vs. attempts by IP address', alpha=0.25\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Perhaps we can draw a boundary between these groups:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x14675810>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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72effZYDDzyQqVOncvrpp9PYmLpB6X333cdBBx3EpEmTeOONNwCor6/n5JNPZp999mH69OksW7YMgBtuuIGbb755x3cnTZpEbW0ttbW1TJgwgYsuuoi9996bY445hpaWFgAWLVrEvvvuy4EHHsjtt9++47u1tbUceuihTJ06lalTp/Lqq68CMH/+fA4//HC+9a1vMXnyZH76059y66237vjetddey2233dbtue+JvL5DXZaig7kygaljK/tUVGNFPwWoqsqZTI8888wzjBw5kqVLl7J8+XKOPfZYAC699FIWLFjA8uXLaWlp4cknn9zxnaKiIl566SW++93vctJJJ3H77bezfPly5syZw+bNmwF49913mTlzJsuWLWPgwIHckUjMXJs2bWLWrFk8//zzLF68mJqaGn73u9+ljLGpqYlXX32VO+64gwsuuACA66+/nv32249ly5Zx44038u1vf7vbY33//ff5/ve/z9tvv01lZSWPPvooAOeffz633XYbr7322ufW32mnnXjuuedYvHgxDz30EJdddtmOZW+88Qa//OUvWbFiBRdeeCFz584FIB6P8+CDD3LWWWd1G09P5G3R0C/+ujTl/P2qy5kxfqc+Vxm1op8Ck/hVfN55fkbRd/Pnd76srKzr5VVVXS9PYfLkyVxxxRVceeWVnHDCCRx66KEAvPjii/zmN7+hubmZ+vp69t57b0488UQAvva1r+347t57782IEU6ljt12243Vq1dTWVnJ6NGjOfjggwE4++yzue2227jiiit27Pf1119nxYoVO9Zpb2/nwAMPTBnjmWc6w6sfdthhbN++na1bt/Lyyy/vuJEfccQRbN68mW3btnV5rGPHjmXKlCkA7L///tTW1rJt2za2bt3Kl7/8ZQDOOeccnn76acBp7HfppZeyZMkSgsEg77333o5tHXDAATvaBFRXVzN06FDefPNNNm7cyH777cfQoUO7P/k9kLcJwbPvpu5g7u11jcQ1M/uwTtoKSL4kBFm25557smjRIp566imuvvpqjjnmGH7yk59wySWXsHDhQkaPHs0NN9zwuTrwxcXFAAQCgR3vE5+jUacKYMfqkh0/qypHH300DzzwQLcxptpWoqiq4/xQKEQ8/lk18FRxAwSDQVpaWlDVTqt2/v73v2f48OEsXbqUeDxOSclnDU4HDPh8bwff+c53mDNn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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = pivot.plot(\n",
    "    kind='scatter', x='attempts', y='success', \n",
    "    title='successes vs. attempts by IP address', alpha=0.25\n",
    ")\n",
    "plt.axvline(125, label='sample boundary', color='red', linestyle='--')\n",
    "plt.legend(loc='lower right')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since we are in the research phase, we have some labeled data, so we can see if our boundary was correct:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0.98, 'successes vs. attempts by IP address')"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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dV5ERERGMrN9wDucc79L0fl347s1puT8IiIyPakFT0REJM2Y2evwXWS1LICIiEzKWIP9RUREJEXM7BFgGfC24bGNIiIiE6UumiIiIiIiIhlCXTRFREREREQyhBI8ERERERGRDKEET0REREREJEMowRMREREREckQSvBEREREREQyhBI8ERERERGRDKEET0REREREJEMowRMREREREckQSvBEREREREQyhBI8ERERERGRDKEET0REREREJEMowRMREREREckQSvBEREREREQyhBI8ERERERGRDKEET0REREREJEMowRMREREREckQSvBEREREREQyhBI8ERERERGRDKEET0REREREJEMowRMREREREckQSvBEREREREQyRHaqA5iIqqoq19DQkOowREQkwTZu3NjqnKtOdRzThepHEZGZY6J15LRI8BoaGtiwYUOqwxARkQQzs/2pjmE6Uf0oIjJzTLSOVBdNERERERGRDKEET0REREREJEMowRMREREREckQ02IM3lii0SiNjY0MDAykOpRpLS8vj/r6esLhcKpDERGRKaD6cWqofhSR6WraJniNjY0UFxfT0NCAmaU6nGnJOUdbWxuNjY0sWLAg1eGIiMgUUP147lQ/ish0Nm27aA4MDFBZWanK6xyYGZWVlbrLKyKSQVQ/njvVjyIynU3bBA9Q5TUF9BmKiGQe/W0/d/oMRWS6mrZdNEVEJEmi/dBzFCwERbWQrTFJIiIipxUbhJ5mcA6KqiGcn7RTK8ETEZHx9RyFHfdDZxNYFlSdD+dfDXklqY5MREQkPQ10ws4HoW0PEIeSOlh8vU/0kmBad9FMtZe85CWT3qeoqGhKzj1VxxERGZdz0Pg0dB4GHLghaNkOLdtSHZmkOdWPIjKjHd0KrTt9vekcdDbCoY1JO70SvHPw+OOPpzqESXPOEY/HUx2GiEwHQ4PQ0XhqeecYZSIjqH4UkRmt48DYZbFoUk6vBO8cDN8lbGpq4sorr2TVqlUsX76cxx577LT7feITn+Ciiy7isssuo7m5GYBf/OIXXHrppaxevZqrr776eHlPTw9/9Vd/xYoVK1i5ciU//vGPRx2rtbWVyy+/nF/96lcAfOELX2DdunWsXLmSv//7vwdg3759LF26lPe85z2sWbOGgwcPTunnICIZKpQDRTWnlhfPSn4sMq2ofhSRGW2serJ4FoSSMzpOCd4U+P73v891113H5s2b2bJlC6tWrRp3297eXi677DK2bNnClVdeyTe+8Q0AXvayl/HEE0+wadMm3vSmN/FP//RPAPzjP/4jpaWlPPfcczz77LNcddVVx4/V3NzMDTfcwKc+9SluuOEGHnjgAXbu3MlTTz3F5s2b2bhxI48++igA27dv5+1vfzubNm1i/vz5Cfw0RCRjmMHcSyC//ERZaT1UX5C6mGRaUf0oIjNSzYVQMufE84JKqF/n69Uk0CQrU2DdunX89V//NdFolJtuuum0FVhOTg433ngjABdffDEPPvgg4BemfeMb30hTUxODg4PHF1b93e9+xz333HN8//Jyf6EVjUZZv349X/nKV3j5y18OwAMPPMADDzzA6tWrAX93c+fOncybN4/58+dz2WWXTf2bF5HMVloHF73JzwSWFfJ3IHM0xkkmRvWjiMxIhZWw/HXQ3RTMolkL+aVJO71a8KbAlVdeyaOPPkpdXR1ve9vb+M53vjPutuFw+PjaOqFQiFgsBsD73/9+3ve+9/Hcc8/x9a9//fjiqs65Mdfiyc7O5uKLL+a3v/3t8TLnHB/72MfYvHkzmzdvZteuXdx2220AFBYWTtn7FZEZJr8MqpdA5flK7mRSVD+KyIyVWwRVi6B6cVKTO1CCNyX2799PTU0Nf/M3f8Ntt93GM888M+ljdHZ2UldXB8Bdd911vPzaa6/ly1/+8vHn7e3tgF+A9dvf/jbbtm3jc5/7HADXXXcd3/72t+np6QHg0KFDHD169Kzfl4iIyLlQ/SgiknwJTfDMrMzMfmRm28xsq5ldbmYVZvagme0M/i0/85HS2yOPPMKqVatYvXo1P/7xj/nABz4w6WPccccd3HLLLVxxxRVUVVUdL//kJz9Je3s7y5cv56KLLuLhhx8+/looFOKee+7h4Ycf5qtf/SrXXnstb3nLW7j88stZsWIFr3/96+nu7p6S9ygiIlNH9ePEqX4UEZkcc84l7uBmdwGPOee+aWY5QAHwceCYc+5zZvZRoNw595HTHWft2rVuw4YNo8q2bt3K0qVLExX6jKLPUkTShZltdM6tTXUciab6cXrQZyki6WSidWTCWvDMrAS4EvgWgHNu0DnXAbwGGO5jcRdwU6JiEBERSTeqH0VEJJESOYvmeUAL8J9mdhGwEfgAUOucawJwzjWZ2RiLLIGZvRN4J8C8efMSGGZiXHrppUQikVFld999NytWrEhRRCIikiZUP6p+FBFJmEQmeNnAGuD9zrknzexLwEcnurNz7k7gTvBdUBITYuI8+eSTqQ5BRETSk+pHERFJmEROstIINDrnhv+S/whfoTWb2WyA4F9NYyUiIjOJ6kcREUmYhCV4zrkjwEEzWxIUrQdeBH4O3BqU3Qr8LFExiIiIpBvVjyIikkiJ7KIJ8H7ge8EMYXuAv8InlT8ws9uAA8AtCY5BREQk3ah+FBGRhEhoguec2wyMNZXn+kSeN1lCodCoQeE//elPaWhoGHPbffv2ceONN/L8888nKToREUlXqh9PUP0oIjK1Et2ClzZ+uukQX/jtdg539DOnLJ8PXbeEm1bXndMx8/Pz2bx58xRFKCIiknyqH0VEMksiJ1lJGz/ddIiP3fcchzr6ccChjn4+dt9z/HTToSk/1759+7jiiitYs2YNa9as4fHHHz9lmxdeeIFLLrmEVatWsXLlSnbu3AnAd7/73ePl73rXuxgaGpry+ERERIapfhQRyTwzIsH7wm+30x8dXRn0R4f4wm+3n9Nx+/v7WbVqFatWreK1r30tADU1NTz44IM888wz3Hvvvdx+++2n7Pe1r32ND3zgA2zevJkNGzZQX1/P1q1buffee/nTn/7E5s2bCYVCfO973zun+ERERE5H9aOISOaZEV00D3f0T6p8osbqghKNRnnf+953vBLasWPHKftdfvnlfOYzn6GxsZGbb76ZRYsW8dBDD7Fx40bWrVsH+MqxpmbMNW5FRESmhOpHEZHMMyMSvDll+Rwao7KaU5Y/5ef64he/SG1tLVu2bCEej5OXl3fKNm95y1u49NJL+dWvfsV1113HN7/5TZxz3HrrrXz2s5+d8phERETGovpRRCTzzIgumh+6bgn54dCosvxwiA9dt2ScPc5eZ2cns2fPJisri7vvvnvMcQJ79uzhvPPO4/bbb+fVr341zz77LOvXr+dHP/oRR4/6dW2PHTvG/v37pzw+ERGRYaofRUQyz4xI8G5aXcdnb15BXVk+BtSV5fPZm1ec8yxhY3nPe97DXXfdxWWXXcaOHTsoLCw8ZZt7772X5cuXs2rVKrZt28bb3/52li1bxqc//WmuvfZaVq5cyTXXXENTU9OUxyciIjJM9aOISOYx51yqYzijtWvXug0bNowq27p1K0uXLk1RRJlFn6WIpAsz2+icG2t9OBmD6sfE0mcpIulkonXkjGjBExERERERmQmU4ImIiIiIiGQIJXgiIiIiIiIZQgmeiIiIiIhIhlCCJyIiIiIikiGU4ImIiIiIiGSI7FQHMF21tbWxfv16AI4cOUIoFKK6uhqAp556ipycnFSGJyIyNeJxyNK9QJk41Y8iIoEU1aEzJ8F79gfw0KegsxFK62H938HKN5z14SorK9m8eTMAd9xxB0VFRXzwgx8ctY1zDuccWbo4EpHppm0PHNoAgz1QswxmLYecolRHJYmg+lFEZGr1tsHhZ6B9P5TMhjlr/L9JMjP+sj77A/jF7dB5EHD+31/c7sun2K5du1i+fDnvfve7WbNmDQcPHqSsrOz46/fccw/veMc7AGhububmm29m7dq1XHLJJTzxxBNTHo+IyKR1NsKLP4W23dDdDLsfhgNPpToqSQTVjyIiUys2ADt/C40boLcFmp6Frb+Agc6khTAzEryHPgXR/tFl0X5fngAvvvgit912G5s2baKurm7c7W6//XY+/OEPs2HDBn7wgx8cr9hERFKqfT/EIqPLjr6Y1MpJkkT1o4jI1OppgY6Do8v62qD7SNJCmBldNDsbJ1d+jhYuXMi6devOuN3vfvc7tm/ffvx5e3s7/f395OfnJyQuEZEJsbHu/VnwkIyi+lFEZIqNV18mrw6dGQleaX3Q/WSM8gQoLCw8/nNWVhbOuePPBwYGjv/snNOAcxFJP+UNEM4f3bIzeyXklaQsJEkQ1Y8iIlOrqAYqF0DrrhNlxbP8I0lmRhfN9X/nL1ZGCuf78gTLysqivLycnTt3Eo/H+clPfnL8tauvvpqvfOUrx58PD0oXEUmpktlw4c0+qStvgMXXQ/3aVEcliaD6UURkamXnwPnXwHlXQvl8mHspXHBjUm+SzowEb+Ub4FX/BqVzAfP/vurfzmmWsMn4/Oc/z/XXX8/69euprz9xV/QrX/kKf/rTn1i5ciXLli3jG9/4RlLiERE5o/J5cMENsOrNULf61CRAMoPqRxGRqZdfBvNfCqveAudfBUXVST29jeweka7Wrl3rNmzYMKps69atLF26NEURZRZ9liKSLsxso3NOzYUTpPoxsfRZikg6mWgdOTNa8ERERERERGYAJXgiIiIiIiIZYloneNOhe2m602coIpJ59Lf93OkzFJHpatomeHl5ebS1tekP8DlwztHW1kZeXl6qQxERkSmi+vHcqX4Ukels2q6DV19fT2NjIy0tLakOZVrLy8sbNXOZiIhMb6ofp4bqRxGZrqZtghcOh1mwYEGqwxAREUkrqh9FRGa2adtFU0REREREREZTgiciIiIiIpIhEtpF08z2Ad3AEBBzzq01swrgXqAB2Ae8wTnXnsg4RERE0o3qSBERSYRktOD9pXNu1YhV1z8KPOScWwQ8FDwXERGZiVRHiojIlEpFF83XAHcFP98F3JSCGERERNKR6kgRETkniU7wHPCAmW00s3cGZbXOuSaA4N+asXY0s3ea2QYz26CpnkVEJAOdVR2p+lFERE4n0cskvNQ5d9jMaoAHzWzbRHd0zt0J3Amwdu1ardYqIpIMzkHHfmg/ANm5UNEARbWpjipTnVUdqfpRRCTN9XfAsT0w0AkldVC+ALLDSTt9QhM859zh4N+jZvYT4BKg2cxmO+eazGw2cDSRMYiIyCS0bIWtv4Z41D8/VALLXwfFs1IbVwZSHSkikoEGuuDFn0HXYf/cDBqugIaXJi2EhHXRNLNCMyse/hm4Fnge+Dlwa7DZrcDPEhWDiIhMQiwKB58+kdyBr6hatqcupgylOlJEJEN1Np5I7sD3jDm0EfqOJS2ERLbg1QI/MbPh83zfOfcbM3sa+IGZ3QYcAG5JYAwiIjJR8ShE+yEUhqEYfogYEOlJaVgZSnWkiEgmikUgKxtfhxrEYzA06B9JkrAEzzm3B7hojPI2YH2izisiIiPE49B5ALqaIKcAyuZDftnY21oWVC6Eoy9CYY1P+HpboPK85MY8A6iOFBHJQN3NEOmEkjmQUwi9bRDOg+w8yK9MWhiJnmRFRERS6chzsPMBfwcR/Fi6Za+FgpOSvKEY7H0U9j8OnQehrw3mvwQWXQsV5yc/bhERkemksxGevw+6j8ChZ3yL3ZJXwqFdcNl7kzrJSirWwRMRkWQY7IGDT5xI7sBXPB17T922pxmatviZMysXwuyLIDYIBZVJrZRERESmpaZnYbDX93zJyoLsHH+zdNZFvmdMPJ60UNSCJyKSqaIRiA6cWj7WmLpYZEQiaL47yXC5iIiInF5/u/83FtS7luVvtIZy/IRl8SGf+CWBWvBERDJVfhmU1o8usyy/Js/JCiohr3R0WU6RLxcREZHTq17i/82vGF0W6YLqxZmzDp6IiKRQVggWXAnEoeOQ7y4y9xIom3fqtvmlsOQVsOcP/i5kXiksuAIKleCJiIicUfVSv7B50xbfalc868TN0zmrkxqKEjwRkUxWVO0nVRloh1Au5JWMv23FAiie7e825hZDOD95cYqIiExnuYVw/nqYswaIAyFwQ1BQ4Rc7TyIleCIimS6UDYXVE9s2nOcfIiIiMnkF5amOQGPwREREREREMoUSPBERERERkQyhBE9ERERERCRDKMETERERERHJEErwREREREREMoQSPBERERERkQyhBE9ERERERCRDKMETERERERHJEFroXEQkHQ10QU8zWAiKZ0FOQXLPH+mBtl0Q7YfSOiibl9zzi4iIpLtYFLoPQ2wACiqhsMqXx+O+Du1thfwyqDwfsnOSFpYSPBGRdNPVBFt/CX2tgEFZPSx5JRRUJOf8va2w6buw6/fgYlA8By5/L9StTs75RURE0l20H3Y/DEeeBzcEOYWw+DqoXgI7H4SN/wWRTggXwMo3wNLXQDg3KaGpi6aISDpxDg4+FSR3AA46DkLLtuTF0PwC7HzAJ3fg704+/0PfqiciIiLQcQCatvjkDmCwF/Y+Bm17YfP3fHIHEO2DLfdA646khaYET0QknQwNQs+RU8u7Dicvho6DY5Q1Qt+x5MUgIiKSzsaqEwc6YaB9xE3aQGzAlyeJEjwRkXQSyoHS+lPLS+cmL4by+Sd+HorCYB+UzAbL8pWUiIjITFdYBdjosoJyPxavqNbXn5Ee37IXyoOCqqSFpgRPRCSdmEHdWiieHTzPgsqFUH1B8mKoXQ5LXw3xId9ymFsMdRfD9vv9uIL+zuTFIiIiko5K50L9xZAV9s/zSmHBy/1N0pVv9F032/dCpBuW3uBfTxJNsiIikm6Ka/2A7J6jPsErroXs5AzMBvwdyBWv95XUQLfvhvLCfRCLwPLX+/GA8y5NXjwiIiLpJpwHC6+CmmUwFIH8SsgvhaEYdDfD6v8Glg04OLQJCqv9rNRJoARPRCQd5RRARUPqzh/pgcYNcHgzxPpPlA8NQteh1MUlIiKSLrJCpyZt0V449DQc2zO6vHy+X1YhO5zwsJTgiYjIqXKLILfEd8/MCvlHKAfyyk50HxUREZHRwgVQvsC34oWCVCs+BBULTjxPMI3BExGRUxVWwYIr/ALnfW3Qttv/3HsUyhtSHZ2IiEh6CoX9enh5xX7ZoaPbfHJXe6EfZ58EasETEZGxzV7lp3wub4B4zCd6Pc3QeRBKZqU6OhERkfQU7Yf5V8Dcy/xY+qGov1FatSgpp1eCJyIiY4tHoWUH9I9Y6ycr7BO8uetSF5eIiEg6a9976pq2HQc0Bk9ERJLIOd/9cigGeSUw0OXvOpY3jE7wwK/vIyIiImOrXOTH4lmWX0u2fa+vO5M0Bk8JnojITBcdgP1/hKZnob8DiPu18DoPQ8U8vw5f226/bWldctfkExERmU46D8OO38D2X0E8DouugfkvhVnLNQZPRESS5NgeOPg04KDzgF8seaVwAAAgAElEQVR/zzkonQctO2Hheph9UbAm32w/w6aIiIiMFh+CnQ/Avj9BuNAvLbT3UX9jNL88aWEowRMRmem6Gv2/Q1HfNRP8WIHKYDB471GYd0lqYhMREZkuBnuCHi/xYImhfF/eccDXr+H8pIShZRJERGa6gkr/b1b2iconv9LPnDk0CNn5JxI/ERERGVt2PhRV+Z+dg9igv3laVJu05A6SkOCZWcjMNpnZL4PnC8zsSTPbaWb3mllOomMQEZHTqFgIZXN9F8ySeiiogrlr4dhuGOz1XTY3fw+OPJ/qSDOK6kcRkQyTnQOLrvV1am+LX1qoZA5UNEAoN3lhJOEcHwC2AiXB888DX3TO3WNmXwNuA/4jCXGIiMhY8stg2U3QdcjfaQzn+24mWWGIDUDnfn8ncueDUFgNxZpFc4qofhQRyTRVS+Cit8L51wAG2XnQ9LxvxatZmpQQEtqCZ2b1wA3AN4PnBlwF/CjY5C7gpkTGICIiE5BbBNVL/CxflQshr9RPvtJ12Cd34JO9vrbUxpkhVD+KiGSoSDcceRZad0LrDv/zYDd0NiYthES34P0r8GGgOHheCXQ452LB80agbqwdzeydwDsB5s2bl+AwRUSmOef8enUOKKg496mYwwVQNh9cDGIR6G3zx8zO8V02cwogR7NpngPVjyIimWQoCv3tYCEoqPb1aFYWDA7AQHtmzKJpZjcCR51zG83sL4aLx9jUjbW/c+5O4E6AtWvXjrmNiIgAkV448Dg0v+ifVy/2a+7klZx+v/EMReHYXmh+Dtr2QMV5MHulnxGs6Vk4tg9yC6HhZVB74ZS9jZlC9aOISIbpPgK7H4buJt8ls2Khb7nb95gfBnHBjZBTfObjTJFEtuC9FHi1mb0SyMOPMfhXoMzMsoO7lPXA4QTGICKS+Vq2QuOGE88Pb/ZdLOe/5OyO174f9jwCOYVQPt+Px4v2QXEdNG3y2/RFYMcDfgbO4lnn/BZmGNWPIiKZIhb1yV37Pv98oAt2PwINL4WiGn9ztPFp34JXUO7LEixhY/Cccx9zztU75xqANwG/d869FXgYeH2w2a3AzxIVg4jIjNC649Sylm0Qj5/d8boawcV9N5P8cj8DWFeTnw1spNgA9Lae3TlmMNWPIiIZZKDdt9wNi/VDXyv0NvuFzyPdfhKzwb6kjWNPxTp4HwH+h5ntwo85+FYKYhARmR4Ge6HvmK8kxjNWv/68Mt/3/2zkjtG1M6/Er5M3LDbg1/dJ4ro+M4DqRxGR6SYUhtK5fpbMrGywbF+WU+yHPAzFfIf7UNivk5cEyVgmAefcI8Ajwc97gEuScV4RkWkrHocjz8HBJyA64NfUabgCiqpP3XbWSmjd5btSgk+66tac/bkrFkDRLOg54p9nheG8v/B3Idt3Q8dBv75P3cV+8pWSOgjnnf35ZjDVjyIi01jHQdj7BzjyAkR7of4S3/tl4VX+9b4WX4cveBmEc5PSPROSlOCJiMgkdR6AnQ9APJhUsWU7uCG48Gbfn3+k0jq46I2+osFBaf25jYvLL4flr4WOAxDt98cqm+fvQsZjfqKVvFLfqrj7IT+z5pxVZ38+ERGR6SbSDTvu9zc6c4v80IbmF2DVm/2Nz6bNvlUvO9fPPN17DLoPQ+X5CQ9NCZ6ISDrqajqR3A3rOOSnYC6sOnX7opqpvTOYX+YfI5lB2y7fPbOrl+OTPLbuUIInIiIzS1+bT+4ALOtEnRkK+xuxR7f6m6RYUJ87f+NUCZ6IyDQz2Odb2nLPcTrknIJTy7JzIJRzbsc9F/EYFM/2Y+8GOk6Un+t7FRERmS5iEYhG/Hi6UNiPsxtm5pdJCOX4majD+b7LZjRYCy9J68cqwRMRmQqxQd8d4/Am33WxZhnMXXv2f8xL5/muHcMzV1oWzF139mvbnQvn/Bp7jU/6lkUzvwh6xwG/kOusFcmPSUREJJmc8zNUH3jSj3kvrYe5l8G+P3K8R0vVYn8jNJznW+qe+6G/IVq+AOas8WPck0AJnojIVGjdCbt+z/E/8gf+7FvcznYtuoJgHNyxvRDp8ePsyuZPWbiT0nEAtt8P8ahPNAe6/NiDxa+AkllaB09ERDJf1yHY9msYGvTPj26F8gZY8TroOuzXhS1v8Mld5yE48JRv5QsP+tmwBzr8DNdJoARPRGQqtO7geHI37OiLULcOssNnd8z8cqgbYwmEZOs65JO7YXklfhxe2VworExdXCIiIsnSfeREcjesq8kvLXTeolO3jQ+OHs/e2+rH7SXhpmgq1sETEUms2GAwsDmJcsZY2yacf/Zr0Y0lOuD7/idb9hhLIIRy/NgDERGRTBMb9GPqRwrlnrpdKOzrw1hk9HVH9mm2TQK14IlI5ogP+SmKD230f5xrl0Hd6uQMaq65EI5uO/EHPisMcy4+dUmDsxEd8OP7jjwHZEHdKqhdefYtg5NVNt/P3Nnb6p+b+TXwUjEeUEREJFHiQ773TeMGfx1Rc4Gv73KLfK+VkWPjMZh9ke+eefAJv5RQ7YUwZ/WJhc9HbjtnNRRUJOVtKMETkcxxbLcfK+bi/vm+PwLmFxhNtLK5sPIN0LbbzzZZvgDKp2jMXPPzsPvhE893POjvJM5aPjXHP5PCSrjwJmjbA5Eun/AlaaC4iIhI0rTvhW33+9mwAfY/7idXWfgXvqvlstf4a42BTp/EZYXg+ftGXHc85seqN7wkqDd3BdvWQ/l5SXsbSvBEJHO07T7xR3ZY8wtQf7HvLploJXP8YyrF40HL3UjOD+5OVoIHUFjtHyIiIpmqbfeJ5G5YyzaoXwe5hf6G58ix5y/+Yozrjuf9dUdBBRRckviYx6AxeCKZLD7kuxjMFGP1j8/O8WvQTFdmY/flH6tMRERkposN+uufszHWmPOsMITGaRMLj7F9dm7KrzvUgieSqVp3QuPTEOmFmqUw56LMX5C6ejEcefbEODgL+b7z2SlcHPxcmfm1czoP+a6fEHTP1NpzIiIix0W64fAW38Mlt9C3ulUtOvN+I1UtgsObIRpMsGJZvjVuvJuq1UvgyAsQO+m6Y7yEMEkmdHYzuwX4jXOu28w+CawBPu2ceyah0YnI2ek4AC/+/MR0vvseg1gfLLo2tXElWmk9rHg9tOyAoYhfZLQieX3eE6Z6iZ95q22HrzyqFk/d+D45J6ofRUTSxIEn/OQoAH2tfgmDlbdA2byJH6Nkjr+OaN3hlwOqXHj6sXNl8/w6eK07/DVXmlx3TDS9/F/OuR+a2cuA64B/Bv4DuDRhkYnI2Ws/cOpaLS07oP6SE+uxZKrSev/IJGZQeZ5/SLpR/Sgikmr9HdCyfXTZ0KC/HppMggdQWucfE1U21z/SyETH4A13ZL0B+A/n3M+AadznSSTDZY1x78ay/EPkXDh35m1mFtWPIiKpNt41zljXQ8mWgnpzou/6kJl9Hbga+LyZ5aIJWkTSV0UDNBbCYO+JstmrtG6ZnL1j++DwM3665+oL/BjA3CSsL5j+VD+KiKRaXom/ztn7hxNlOYX+eihVOg76dXn72vxQi1krk3YdNtEE7w3A9cA/O+c6zGw28KHEhSUi56R4Fix/nV+sM9INlYsmP9BYZFhXE7z40xOT13Qf8b9XizN8TOfEqH4UEUkHdWsgr9hPMpdbDDXL/PVQKvQchRd+cuJGe89R3410ySshK/H3ACea4M0GfuWci5jZXwArge8kLCoROXeT7UMuMp6OAyeSu2HD6wIVlKcmpvSh+lFEJB2E83zvknSYZbrr0OheVOATz7mtUFST8NNPNIX8MTBkZucD3wIWAN9PWFQiIpI+zMYqTHoYaUr1o4iIjDbmnAc2Tn069Sbaghd3zsXM7GbgX51z/25mmxIZmIiIpImy+X4sw2AvuLgfT1BYDQf+DBULfYXVtNn/W7vCL+OQhC4oaUL1o4iIjFYyB8KF0LoNOg+CAy58LZCcBdAnWgNHzezNwNuBXwZl4cSEJCIiaaW41ldMsy+CvFI/yYplQdMW2PBtaHwa2vZA6y7Y+nO/HtDMofpRRERGK6wOFkgv8OMB56yG9n1w4HEY7En46Sea4P0VcDnwGefcXjNbAHw3cWGJiEhaKZsLi6+H0rkQ6YKeZl/eeRBat/vEDyA+BM3PpS7O5FP9KCIio0W6Yd8foa8Fckvg6AtwaAO07YKeloSffkJdNJ1zL5rZR4B5wfO9wOcSGZiIiKQbBwMdMBQdXRaPjx5X4OJJjyxVVD+KiMgpnPM9XbLCfnjD8ERlzuH7aybWhFrwzOxVwGbgN8HzVWb280QGJiIigfiQ7/b4ws9g6y99d8hkLJw60AkHnoRnfwh7H/NTPM9eNTqZK6mDmgt84ge+QkuHGcySRPWjiMgMd2wfbPs1vPBTOLoVhmKQHczoGcqGvDJYcIXvtlmx0P+bYBOdZOUO4BLgEQDn3OagG4qIiCRay3bY9kuf6IFfouDC10LlwsSdMxaFXQ/5c4PvVnJsDyy7ya/j07QFskKw7NWcuFdoPgGsXJy4uNLPHah+FBGZmdr3wQv3QSzin7dshyXXQ2wQDj7tG+vadkHvUbjsvf6GaG5xwsOaaIIXc8512uipPZNw+1hEZIZzDg4/cyK5A99F8sjziU3wepr9pCkjdR32ldTslf7O5Mg6oeaCpE3/nGZUP4qIzFQt204kd+CHKBx4EvLLfOtd+Xwon+dfM0vKGngw8QTveTN7CxAys0XA7cDjiQtLREQAn+CNTO6GxaOnlk3peePAGGPphsfXnZzMzczkDlQ/iojMXGPWz7GThlHYifIkmegsmu8HLgQi+AVcO4G/TVRQIpKBIt1waBO8+At/d6uvI9URTQ9ZWTBrJaMWFrcsqF2W2PMW1fjxdSMVVEBRbWLPO/2ofhQRmW4i3XDoGX9NcvBJP8b8bFQt9sMVRqq7+NT6MxSG8uT13p/oLJp9wCeCh4jI5AxFYdfv4eiL/nkzcGy3H8+VU5DS0KaFmmWA8+PeLMuvp5PocW7hPL8swqEN0HHQJ3z163y3EzlO9aOIyDQTG+OapO0sr0kqzoMLbvR15VDUD1+YtQLckL9Be/RFCOdD3VrfXTNJJpTgmdmDwC3OuY7geTlwj3PuukQGJyIZoqfZr5U2Uvt+6G5K7DiyTBHOhbo1QUsevl9/MhRVw5JX+MHiofBM7oY5LtWPIiLTzFRek2SFfI+a6iW+W+bI+nn+S6BunU/0Tm7lS7CJXiVUDVdeAM65djNLzihBEZn+4jG/VtpY5TJxyUrsTpadk5rzTg+qH0VEphMXG2fs3BhlEzVeApcdPvtjnoOJjsGLm9m84SdmNp8zzBJmZnlm9pSZbTGzF8zsH4LyBWb2pJntNLN7zUxXDiKZrrAGimeNLssv8+Ui09uk68dgO9WRIiKpMO41SeLXp0uWiSZ4nwD+aGZ3m9ndwKPAx86wTwS4yjl3EbAKuN7MLgM+D3zRObcIaAduO7vQRWTayCnw68LULPULflae7/usF5SnOjKRc3U29SOojhQRSY2cAj/8YPiapCrzrkkmOsnKb8xsDXAZfiq3/98513qGfRzQEzwNBw8HXAW8JSi/C79I7H9MOnIRmV6KZ8HSV0O030/gkeT+6CKJcDb1Y7Cf6kgRkVTJ8GuSCbXgmdlrgahz7pfOuV8AMTO7aQL7hcxsM3AUeBDYDXQ454YH3jQCdePs+04z22BmG1paWiYSpoiku6wsyC3MuD+kMnOdbf0Y7HtWdaTqRxGRKZDB1yQT7aL59865zuEnwYDyvz/TTs65IefcKqAeuARYOtZm4+x7p3NurXNubXV15vSJHam1J8Iz+9v58+42Dh7rw7kzDtsQEZH0clb1Y7DtWdWRM6F+FJlu+gdjbD/SzR93tbKtqYu+iCYRk9SZ6JRsYyWCE57OzTnXYWaP4LuwlJlZdnCHsh44PNHjZJKW7gF+vuUwXf3+D0B2lnHNhbVcMKskxZGJiMgknFP9CKojRaa76FCcP+5q5flDXcfLLphVzFUX1JAbzrzWIUl/E23B22Bm/2JmC83sPDP7IrDxdDuYWbWZlQU/5wNXA1uBh4HXB5vdCvzs7EKf3nYf7T2e3AHE4o5N+9uJxM5hilYREUm2SdePoDpSJJO0dEfY2tQ9qmxHczdHuyMpikhmuokmeO8HBoF7gR8CA8B7z7DPbOBhM3sWeBp40Dn3S+AjwP8ws11AJfCtswl8uusdPLXpvj8aJxZXN00RkWnkbOpHUB0pkjEGY3GGTrp+izuIxMZY/1UkCSY6i2Yv8NHJHNg59yyweozyPfixBjPavIoCnjvUychhdwuqCynMSdFCxiIiMmlnUz8G+6mOFMkQlUU5lBWE6eiLHi8rys2mslDLWEpqTCibMLOHGXug91VTHtEM0VBZyJWLqth8sJNYPE5DZSFr5mbO+hsiIjOB6kcRKc4Lc/XSWv68p41jPYOUFYS5bGEl5UrwJEUm2lz0wRE/5wGvAzQ90DkIZ2exZn4Fi2tLiMXjlOaHMbNUhyUiIpOj+lFEmFtRQG1JLr2RIQpyQ+Rma3IVSZ2JdtE8ecD4n8zsDwmIZ8YpylOXTBGR6Ur1o4gMy8kOkaPETtLARLtoVox4mgWsBWYlJKIM1tE3SFNnP7EhqC3NpaY4L9UhiYjIOVD9KDKztPZEONI5QJbBrNI8KgpzUx2SyCkm2ny0ET/GwIAosA+4LUExZaTWngi/fraJtt5BAPLDIa5fMYuGysIURyYiIudA9aPIDNHY3sevn2uiN+KXtCrJz+bGlbOpLclPcWQio010mYSPAKuccwuAu4FeoC9hUWWgnc09x5M7gP7oEM/sbz9lWl0REZlWVD+KzBBbDnYcT+4AuvpjvHC4+zR7iKTGRBO8TzrnuszsZcA1wH8B/5GwqDJQe9/gKWWd/VGiQ1rYXERkGlP9KDIDxOOO9t7oKeXHerWYuaSfiSZ4w1nIDcDXnHM/AzT36yTMrygYsywvrElWRESmMdWPIjNAVpaxsObUYTXnVRWlIBqR05tognfIzL4OvAH4tZnlTmJfAc6rLmT1vDLywlmEQ8bC6kJWz9O6dyIi05zqR5EZ4sI5pVwwq5ic7Cxys7NYUVfC4triVIclcoqJNh+9Abge+GfnXIeZzQY+lLiwMk9+TjYvX1zN8rpS4nFHRWEO2SFdA4iITHOqH0VmiJL8MNdeOItjvREMo6Iwh6wsrWEs6Wei6+D1AfeNeN4ENCUqqExlZlQVaTpdEZFMofpRZGYJZRnVWuZK0pwGgCVYdChOc9cAPZEYZflhaorzdLdHREREJM31DcZo7hogOuSoKsrRmncybSjBS6DoUJw/72lj84EOhuKOcMh46flVGnsnIiIiksa6+qP8bmsz+9v8qieFudlcd2Et87V+sUwDGgSWQEc6B9i8v+P4WnfRIceTe47Rpil1RURERNLWvrbe48kdQG8kxlN7jxGNxVMYlcjEKMFLoN5IjCE3eiHz/ugQ/RGtfSciIiKSrtp6Tr0Z39EXpT+qazhJf0rwEqg0P0w4NHq8XXFeNsV54RRFJCIiIiJnMqv01IlUakpyKczV6CZJf0rwEqi2JI+XLKwkPxwCoCg3mysWVVNaoARPREREJF3NryxkeV0J2VmGATXFuVy6oIKQJsqTaUC3IRIoK8tYM7+CeRWF9EWHKMnLpqwgJ9VhiYiIiMhpFORkc9UFtayoKyU65KgsyqEgR5fNMj3oNzUJqoo1ra6IiIjIdBLKMmaV5qc6DJFJU4KXQJHYEC3dEeIOqnTnR0RERCTttfcO0tk/SF44m5riXK1fLNOOMo4E6eyL8vD2o+xv6yXuYFZJLlcvq6W6+NRBuyIiIiKSejuau3lkewu9kRg5oSxWzy9jXUMF4ZCmrZDpQ7+tCbKjuZu9rT65AzjSFWHzwc7UBiUiIiIiY+oeiPLHXa30RmIADA7F2bC3nSOdAymOTGRylOAlyOGO/jHLBmNaP0VEREQk3XQPxOjqj44qG3KOzpPKRNKdumgmQGt3hNqSXPqjQ7T1DjIYiwNQW5yrJn4RERGRNBCPO1p6IkSH4lQU5lCYm01RbjbdA7Hj22SZX8NYZDrRb+wUGoo7Nh1o5+l9x+joi9LZN8ia+eW0dA9SnJfN6vllmGmgroiIiEgqDUSHeGJ3G88f7iQ65KgqymX90hpesrCSP+xoYSAaJ5RlXDS3jDmaSVOmGSV4U6ips5/Hd7cxFHfkhUOEinJp6hzgxpWzqSnJozhPC5yLiIiIpNqBtj42Hew4/ry1J8ITe9p41UVzqC7Oo7N/kPxwNrUluWSr95VMM0rwplBnX5Sh4VlVgHAoi7iDvHC2kjsRERGRNHG0+9SJU1q6I/RGYlQX51KtNYxlGtMtiSlUlJfNyUulFOaGKMwNpSYgERERETlFeUHOKWWl+dnk5+iaTaY/JXhTaHZpHivrS48neTmhLC47r5KyMf6IiIiIiEhqzK8s4LzqQobvyxfkhLhkQSW52UrwZPpTF80plJMd4mXnV7Owppi+SIyygjC1JVrYXERERCSdFOWFuXZZLc1dA0RijsrCHKrULVMyhBK8KRbOzmJeRUGqwxARERGR08jPyaahqijVYYhMOXXRnCKR2BDNXQN09mkxTBEREZF00tE3GLTWDaU6FJGES1gLnpnNBb4DzALiwJ3OuS+ZWQVwL9AA7APe4JxrT1QcyXC4o5/HdrRwtDtCXjjE2oZyVtaXETp5xhUREZnxZlL9KJJqsaE4Wxo7eGZ/BwPRIWpLcrlycTWztLadZLBEtuDFgP/pnFsKXAa818yWAR8FHnLOLQIeCp5PW5HYEI/taOFw5wCxuKMnEuOxna0c7uhPdWgiIpKeZkT9KJIODnX088edrfREYsTijkMdAzy2s5VoLJ7q0EQSJmEJnnOuyTn3TPBzN7AVqANeA9wVbHYXcFOiYkiGzr4oLT2RUWVDcUdbz2CKIhIRkXQ2U+pHkXRwtDvCiCWKAb/eXWe/htRI5krKGDwzawBWA08Ctc65JvCVHFAzzj7vNLMNZrahpaUlGWGelbxwFnnhU6fULdDadyIicgaZXD+KpIPi3FNHI+XnhMa8dhPJFAlP8MysCPgx8LfOua6J7uecu9M5t9Y5t7a6ujpxAZ6jkvwc1jVUjBpvt6CqkDll6tstIiLjy/T6USQd1JfnM7/yxOzm2VnG2vkVFOVpInnJXAn97TazML7y+p5z7r6guNnMZjvnmsxsNnA0kTEkw4q6UiqLcmjtGaQwJ8Sc8nwKc/SHQ0RExjZT6keRVCvKC3PthbM43N5PX3SI6qIcZmuCFclwiZxF04BvAVudc/8y4qWfA7cCnwv+/VmiYkiWrCyjvryA+nKtfyciIqc3k+pHkXRQlJvN4lnFqQ5DJGkS2cz0UuBtwHNmtjko+zi+4vqBmd0GHABuSWAMkqkGeyAWhfwysAkuRzEUg0gXhPP9Q0QkNVQ/ikhmi0VhsBtyCiE7d/Rrg30QG4C8MsjSktyJkLAEzzn3R2C8K+/1iTqvZLj4EDRtgcanIRaB8gXQ8DIoKD/9ft3NsO9R6DwMuUUw/3KoWZacmEVERlD9KCIZreMg7H0Uelv9jfiGl0HlQojH4chzcPBJn+CVzfOvFValOuKMo4FiMr2074OdD4IL1q9pft634F1ww/gtebGI36fzoH8e7YNtv4HcMiidk5SwRURERDJepBu23w99bf55tA+2/RpWvcW/tvMBiMf8a0e3+uu5Za+BLM1qOpXULirTS8eBE8ndsGN7YaBz/H36jkF30+iyoQj0Nk99fCIiIiIzVW/bieRu2GAP9LVC16ETyd2wjgPQ35G8+GYIJXhnKRaLc7Srn75I7Mwby9TJKTy1LJwLoZzx9wmFx349O2/q4hIREZGk6+qP0NIdSXUYMiwUhqyTOgia+euwnDEmIwzlQvZpruHkrKiL5lnY39rL/c83se1IN1VFubxixWwunn+GMWAyNSoWQH4F9B/zz7NCUH/p2H80hhVWQd0a2PcnwPmysnooqUt4uCIiIjL1IoMxnth7jAdfbKZvcIi1DeVcs6yW6mLdvE2polqYtQIObzpRVrUESmZDXikU1kBvsAKMZcHcdZCrGU6nmhK8SeqLxLh3w0E27m8HoKlzgIPH+vjw9RewsKYoxdHNAIXVsOJ1vltmtM8P0C2bf+b95l7q/+h0HfYDfssXQF5J4uMVERGRKfdCUxd3PrqHWNzfuD20uZ8sgzddMoFrAkmcUDYsuBLK5/kJ7gqrobzB95rKzoPlr/XXcIM9UFo/sWs4mTQleJN0qKOf5w6NHu/V0R+lsaNPCV6yFFZNfsal7ByoXuwfIiIiMq29cLjreHI37Ol97Vy9bBZVRbnj7CVJkVPgZyofa7byggr/kIRSgjdJ4VAWi6oLicYdLd2DHOuNYGbkhTX7j4iIiEgiDcUdkdgQ1cU+iXPO4YAsMwpysskLa3oJESV4kxSPxwmHQzyzu425lQUsqS0CjPOqxpj8Q0RERESmxIFjfWzYd4yOvijFedlcsaiKnzxziFg8TmlBmPVLayjKDac6TJGUU4I3CUc6+7n/+SM0dw4wqzSP5s4BFlRWcvl5lakOTURERCRjtfVE+M3zTfRGhgA4cKyX8oIc3vuXCznY3s/i2mJKc3VZKwJaJmFSmrsitPdFae4a+H/t3Xd8ZGd97/HPb0ZlRr2X1a5W29frLe69xmZx4WJsDBgIgeDEEOCSQg259wZyQ+IEbsAkgWCCsekBA8YYYwPGQNy9butdb+9aSasujaTRaMpz/zizKitpm8pIM9/366WX5jxzzpzfHD2ac35znkJPOEp+bhbbW3o52DVAq4boFREREZkRbaHIcHIH0DUQ5dl9nWT7fZTm5bC9JcRLjT30D2n6KhEleKcgP9d4w7pa/uzKpSwoDjAwFAcM5yDLZ6kOL7XiMUjET7yeiIiIyEmKRqP09NmPv7QAACAASURBVEcoyRvb9NJvRrbfCMcSdPQPAd44CVmW4ddj0yUWBedOvJ7MSbqXfZI6QoO81tTHw6+24PfBDetqiQzFaAkNkZvlo6Y4mOoQUyMagdYt0LwZzO/NN1e52hsmV0REROQ0Pb+vg4debeZgez/nNZRxzepKHtveBkBpfjYNFXn0D3p37HwGGxYVk6tB76amrw0OvwDdB73ppRadD0ULUh2VnCJdhZ+kp/Z28IkfvUIsDg7H49tbuevtZ7OyqoDasnyKgxnaqbd1K+z85chyqBl8WVC1OnUxiYiIyLz22uFuPvOz19h5JATAk3s6aO4Z5E8vbeC1I30sLMujNJjNvvZ+wtE4SyvzaSjXgHdTEh2EnY9CzyFveaAD+lpg/W0QLE5tbHJKlOCdhEgkyiNbW4gnwAwMI5Zw/HZHG5+9eV2qw0udeAyaXxlb5hLQuk0JnoiIiJy2g12Dw8ndUY9saeaWc+q4fl3tcNnCsrzZDi199bdCb+PYsoFOL8lTgjevKME7CT4flOflsmFhMYWBbFp6BznQMUAgO8PbeZt5d+uO5VPzCBERETl9R1taLiwNUhjIoqUngt/nzXcnM8WX/DlmTAXTkB3zjRK8k9Afc6xfVExvOIrPb6ytKyYcjXPtGVWpDi21fH5YcA70NoNLfhj4s6F6bWrjEhERkXklkXDsaevj1cM9xOIJ6krz+N83nsGvt7fS2TfE+Q2lXLaigtVVBakONX0VVEPFcmjbMVJWtAAKayffRuYkJXgnEI0n+P2ONp7f18n2I710D0SpKw3yujU1lGRqv7vRqpIDqrRuS/a9WwNlS1IdlYiIiMwj+9r7+cWWFuIJb+TGPW191JUEyfIZDhiKO2/Ucg2iMnOysmH5NVBUB90HoLDGu67LVVI93yjBO4GOvgj72vvp6BuiOJhDcTAHgOJgFjtb+1lVm+Ftkn1+qFzl/YiIiIichh1HQsPJHUBfJM5rzb1ctaqK9j5vGoT2viE6+oeoLgqkKsz0FyiG+gu9H5m3lOCdhJriXBaWVpGXk82etj7+e1cHhqFW4CIiIiJTZ3gXpevqS8jyGb/b3kZoaOw8bOp+J3JylOCdQPdAlM7+KI1dA6yuKWJpRT7nN5TR3htmVW1hqsObXyJ90LYN2ndBsAxq1kFxXaqjEhERkVl2sKOfZ/d1sretj9U1RZy5oJBAtp/Ht7cSjSW4YlUlVQW5PLmnY3ibZZUFVBTkpjDqDBfu8abH6toHBTVQs9brtydzjhK849jf3sddv97JS4e6aemNAHDH5UuIxhO89bxFLK1Qm+ST5hwceMqbPBOg6wB07oF1b4WCytTGJiIiIrOmvS/CvU/tY2uTNw3Ciwe7WVdXRDSe4LvPenOwPbS5iTtvXc/5DcUc6BhkSWU+Z9QW4ffpNl5KxKOw57GRAVi6DkLXflj3FggUpTQ0GU/jnh7HrtZ+DnQO0N7nJXcGPLr1CIW5WTT1hPHpQ+bkDXR4A7GMNtgLPY0Try8iIiJp6VBH/3Byd9SjW4+wuDwfn4HPYDCW4OFXm1m/sJS3XVDPBUvKKQxocLuU6WuFjt3jy0LNqYlHjksJ3nFkJRx/ctkSPrJxJZXBLHw+SLgEZt583nIqXPJnonIRERHJFEcvofw+IzfLh98MlxxgZfTVQjwB8YQuuOYG57XGGles67i5SE00JxEKD0GWj637e8nN8vGFd5zD5sYu+iMJugaiLCwLpjrE+SVYDhUrofmVkbLsPG8oXhEREUlb25q72bS/h50tIc6sK+LsRcWsqytme0svocEYhYEsblhfy6GOgeFt/D64YW0NhUH1uZsT8qugtAE6946UBcu8qRRkzlGCN4mn9nTyVz94mYGhOA744QuNfPFtZ9ERGmJJVR6rM316hFPl80HD5V477bYdECyFunOhUJ1zRURE0tWhjj6++rt9PPhK03DZ28+v5z2XLOZbzx6ksWuAZRUFnN9QRkGun95IjKFYgtefWcPFS8pSGLmMkZUDK14HTS9D5z7v+q3uHAiWpDoymYASvAn0hgd58JXDw8mdAe2hIZ7c1cE1aypZVJqf6hDnp0AhNFwG9Zd4CZ+IiIiktf2dYR7a3DSm7IGXD/GG9TXUl+WxoiqfcNSxrTnEm89dyJ03nwlAdrb62805eWWw/A8gkdB13Bynv84EEg5qCrP53zes5upVFcPtwQdjMbJ9vjETccpp0IeCiIhIRkg4x7GXTYMxR9w5QoMx2vui9EdiyfUc2dnZSu7mOl3HzXn6C02gqz/G+kXltIQibDyzhp984GJqCozLllXS2RuhLD8n1SGKiIiIzDnP7m3n336zky/8agdP7G5jdVWQi5aObWp57eoqyo+5lqopDlBRoOsrkemgJprH6B4I88MXGvnyb/cMl920oZZv/sml+DCqioOYaXoEERERkdGe3tPOR37wMk093vRSJUE/X3jbOfzN61fz481N7GgJsbauhBvW1VCSn8vK6gLaQhEWlAQ5p76EYI4uS0Wmg/6TjrG7Ncx3n90/puxnm5u5+dyFXLWyKjVBiYiIiMxxj+9oG07uALrDcX6+uYl/vPlMPlGzgq5wjNJgFjk53p26G9YFGIonyPH79OW5yDRSE81jxBOO8xeXcsflDeQmR+ZNOIjFNA+LiIiIyGT6BmPjyyJxIjHIycmhujhvOLkDMDNys/xK7kSm2YwleGZ2j5m1mtmWUWVlZvYrM9uV/F06U/s/XcEcP1efUUNhIJuvvuN8/vVt61m7oJDa4kCqQxMRkTQxX8+RIke9eKCT+57cx1d+u5snd7cRiUS4cmUlWcdcWV67poqCoAZNEZlNM9lE817g34Bvjir7JPCYc+5OM/tkcvkTMxjDKdlyuJu/f2gbz+3vBCDXb/zDLeu467azWVZVmOLoREQkjdzLPDtHihz1woEuPnn/Zna19QNeX7vPv+Vszq0v5vNvOYsHXmokGne8YX0tFzZoLjuR2TZjCZ5z7vdm1nBM8U3AVcnH9wG/ZQ6dvLY3h4aTO4BI3PFfzzdydr2+RBURkekzH8+RIkc9t7djOLkDr6/dT15q5Jz6Nbzp7DouWlJCPGHUleWlMEqRzDXbffCqnXPNAMnfk45aYmZ3mNkmM9vU1tY2K8H1Dkb59BtW8/7LF1Gc6+W+Xf0RwkPxWdm/iIhktJM6R6bi/CgyWtfAEADBbB9FyeulzoEoQzFvwruaknwldyIpNGdH0XTO3Q3cDXDeeefN+Mzi4XCYNbVFbG8JsaSqhPtuX8iRnj52t0dYURmc6d2LiIiclNk+P0rmOtjRx67WPva291Nfls/SynxWVBVy0dJyuvqHSABD8QSFuVmsXVBETYmSOpG5YLYTvCNmVuucazazWqB1lvc/qWcOhPjoD1+moz8KwNoFhfzdTWvJzQ6MGfFJRERkhszZc6Rknq7+IR54uZkv/HonLvk1wnsva+D2ixZTVxIEM57Z0040nuDMBUXcdNaC1AYsIsNmu4nmg8C7k4/fDfx0lvc/ofZQmB+/2Dic3AFsaQrx3P4uaouy6eyPHGdrERGRaTEnz5GSmXa3hvjGE/uGkzuAbz19gAPdg7x6uIf2vgjn1pdy0ZJycrL8PLatjXB0/DQJIjL7ZnKahO8BTwOrzKzRzG4H7gReZ2a7gNcll1NuIOKIhwb5s8sXUTaqNWZ7aJDS/FwG1AdPRESm0Xw6R0pmGoo7usLeF99HZ6mLxh0D0TidA0MMDMU5EopwJBSheyBKd3iIaEzXSyJzwUyOovn2SZ66Zqb2edr8Cd521XIOdYb5/FurqC8PcttXn+XCpWX8ZncTt25YmuoIRUQkjcyrc6SktW1NPezr6Kc3HGNJRT4bFuQTCASoLMzhihUVbGvuJZ5w+H1GbXGA6sIA+Tl+frO9dczdvXMXl1IUzE3dGxGRYXN2kJXZ0tk3xMOvtPC5R3cQd2AGH7hyGT9638VEHazOLibr2Fk7RUREROa5bc29fO6XO/nNdq+7Z2kwm3+4ZR3Xr6tlaXkBf3L5Er79zAFea+plaUUBf3jxYpZV5pFIwLsuWsxj244wFEtwbkMZV62cdGB0EZllGZ/g7W4L8bX/3ks8+S2Uc3DPk3u5ZFk5R3oHueXcRakNUERERGQGbG/uHU7uALrCUb73/EHOqC0kGnfcv+kAV6+qZOOZNcRicX7+6mFqS4KsqyvmxvULOL+hlGjcUVscwOfTl+Eic0XGJ3hD8QQd/VFWlsPODq8sHHWEo3Ha+oZSG5yIiIjIDGntHRxXdqQnTCgSxznHkVCMB15uHvN8ODIykEpVkaaREpmLMj7Bq8zP4Wt/dC4DkTh1pUEKc42//MGrVBTkEszxpzq82dFzGPpbwZcNWbkQCUGwBIoWQVb2xNtEQt520TAUVEJRnde+VUREROaMlw920tgdJsvvp740jzULioafO6O2iIr8bMwMh9eK6ZJllSwtC9IfTVBflsfBzoHh9cvysqkuCqTgXchpG+qD7kbvtz857VdOARQvhKxR04AlEtDbCP0dkJMHRQshNz81McuUZXSCt62pl7se28UjW48AUFOUw2fftI7Pv3UFpblZ5AcLUhzhLGjdBtt/AbEwdO3z/unrzoXeJlh0Piy5EnzHJLqDIdj+M+g64C37c2Dl66Fm7ezHLyIiIhN6ancbf/OTrezr6Afg0uXlfPy61WxYWALA8vIgf37tSr79zAE6B4a4YkUFbzyrlvxgDvlBeNfFi7l/UyOHu8JUFedyy9l1LK7QRf+8EQnB9p9Dxx7o2g8DnbD6Roj0QM16WHrVyDVe88uw+zFIJO/QVqyEldcpyZunMjrBe625dzi5A2jpHeL7zx/i/1y/krj5KQpOcvcqXUQH4cDTEI94HwKhFnAJqFrj3Y07/CJUrIbiYyYv7do3ktwBxIe81ylbAjn6IBAREUm1noEoP3np8HByB/Dk7g5e2N81nOC1D8ZxDt53xVLMZ8TicbY1hTijtohAdhbrF5bQUB6kvS9KaV4Opfk5k+1O5qLug9C5z7t7F2r2rvEOPAUNl3nXeJWrobgOwj3edVxi1DyG7Tu9L+4rV6UufjltGZ3gNXUPjCtr7A7TFYkRdBnQWTga9v7pwfundgnv8WAP+HK8u3rR8ceIwZ4JXqsfhgaU4ImIiMwBfZEojd3j+9gd6BxJ+HrDUTr6hxiVA5KX42cwmiCQ/I67KJir6Q/mq8Fe73c8OnKNF+kB83nXfUev8aIDE1/vRUKzE6dMu4xO8C5fXs7yqgJys3zUleRx509for62jPqyALFEBhyaQBEU1UL7bsgOeH3wXBwKq6GnyWuumVc2fruiWu8O3+gJcAqqvX57IiIiMuP2tfVzqGuAvsEY1cU5rKnKIxgcGfSkrjSPixrKeHpPx5jtzl1cOvy4pjiAAaPO5tQUBygMpHkLpkxRUO0lc9lBrztNfAhK6r3fOfkQTNaFYCnkV0GoaWRbnx/yK1MTt0xZBmQxE3tidxuf+elWdrV5X1vdsLaGj/6PDcQSCVpDcVbWZMCdKJ8fGq6AWAR6m6F2gzdYSmwI8kq9ttkTJXgli2HJFdC4ydu2sNpb168TgoiIyEzb197Lt549xH1P7ifuoLowl0+/8UyuXzd2VMtr11RyJDTII1uaCeRk8Y4LFrGmZmR8gfqyPC5cWs7mxm6GYglqigNcvLQcv0+DpqWFknpvLIXG56Ai2dRywTkw1AMrXgf5FV5ZdgCW/wHs/jX0t0NWAOov9AZikXkpIxO89lCY+zc1Did3AA9vaeHKVVWcVRdgQUlhCqObZYXVsO6tMNDhfbvjz4GhEOQWQe4kg8z4s2HxJV677NiQlwRmqfmGiIjIbNjbFuaeJ/YPLx8JRfjGk/tZUZXP8mpvlMxYLMGvXmvjg1cv483n1OEHyvP9vHS4j+XVxQDkZPm5eFk5q2oKiMYdpXnZ5GRlyAjimcCfBYsvgsqV3hfyWbkQG4TcQu9ntJJFsOE2CHd7CV5e6cSvKfNCRiZ4nQND7BuV3B11sL2PG9dW0DsYpSCTmidk5XjNLo8KnGSCm1c+M/GIiIjIpNpCkXFle9pC9AxGh5fD0ThNPWH+6gebx6x35crxze7K8vUlbVqbqDXWRLKD3o/MexmZ4JXnBfjUjavpHohSkpdNbVEuH7n/Vc5cWMym/Ye5dMXSVIcoIiIiGWZ7cw/NPYOYQV1JgBXJO23HWlQW5KyFRaxI3q0bGIoTyDaqC0fmqCsMZrOmtogDHWMHz1hdW4SIpLeMS/B6wxEe2drC5x/dQVc4Skkgi49et5q7bltLf9hh/kKyszJgBE0RERGZM1460MXnHt3OU3s7Adi4pooPX7uCtQvGD2C2pDSPa9fUcM8Te+kciLGuroiPbFzJwrKx4wdcvbqK1lCEVw51k+03rlhZyfqFEyeNIpI+Mi7B23mkny8+tpOusNeMoXswxl2P7WR19Tl0Dgyx8czaE7yCiIiIyPT6xdaW4eQO4JevtXLBkvIJE7ym0CD72/u45oxqEg5y/Mbj29tYW1dCRcFIc8vF5fl84KplHO4O4/cZ9WX55OhLbJG0l3EJXt9gjLbQ0JiyttAQvYMxDneFUxSViIiIZKr2vkF2HRk/59iOlt5J1h/iUNfYOe6C2T56BobGJHgABYFsVtVk0LgCIpJ5Cd7Ssly+ffv5xBKO6sIABzt6+PuHd1MSzMZfOcmokdMpkYC+Fm+C8dyi5BwlGo5YREQkXexv76OxO0zCwcKiIEurj399UVEQ4KxFJTy+o21M+YZFE49kWFMUwGeQGDWBXX1ZPuUFOVOOXU5SbAhCzd6ccnkVGnVS5pSMSvB2tvTy7WcP8l/PHSISd5zfUMrHN67k71+/kqo8R0PlDLdLT8Th0LNw4GnvAyErAEuvgLpzZ3a/IiIiMiu2NvVw9+/38NArzSSAq1ZV8RfXrGDDovFNLUe79owq9rb38fCrLeT4fNx8bh3nN0y8zcrqAm49dxEPb26mbyhGfVket563kJI8jYY5K4YGYM9jcGQbuLj3hf3qG6BsSaojEwEyLMF7rbmXbz59cHj5+f1d3P/iYT5+/XIKcnLJzZ7hwxFqgQNPQTw5jHFsEPb9NxTXQ8H4YYtFRERkfnluXyc/fbl5ePnx7a2cUVN4wgTvzLoSPrZxFe+4YDFmsLQyn4qCwITr5uVmc9OGBZy1qISBaJyaolwqCydeV2ZA135o2TKyHOmFfb+HogWaF1jmhIxK8Ha1jp/7bntziLa+GOXV+RNsMc0ivSPJ3VHRMERCSvBERETSwNamnnFl25p76Q4PUhI8fhK2sCx/3EiYk8nK8rGsaha6lsh4/W3jy8JdEOlTgidzQkYleG9cX8vFS8vI9huLi7P5qx9vY1llPrWFedOzg9gghFqBhNe37tjJInOLwJ/jNc88Kjvv5CcWFxERkRnTGgqzr32AWNxRXRxg+Wn0zT9zQTG7W/tZXlWAAfs7+lm3sOiEyZ3MkqNjIcQiECyF4PHvrE4of4Iv5fNKIVcJt8wNGZPgbdrXyRcf28UTu9spyPHxRxcv4W9vXE1fNEFx3jSMLhXugp2PQtcBcA6K62DV9ZBfMbJOYS00XOo104xFvARwyRUTf1CIiIjIrNlxpJcfPt/I9549yEAszlWrqvjw1cs5e/GpDZ5x0ZJStjX18sDLh4klHK9fU821Z1TPUNRySmJDcOBJOPyi92V7bhGsfD1ULD+11yltgNoNcGSLN75CoBgartTdO5kzMiLBa+8N8/1NB3lidzsAfUMJvvy7PaxdWESx3xFPOPy+KY5k2bIFOveNLPc0eh8gKzeOlPl8sOhCKGnwRtEMFEFB1dT2KyIiIlP2WlMv//nEyHn88e2t1JcFWVmVT37w5Een7I3Eyc/184YNC3DOURTIpv2Y6ZkkRXoOeYPdueTwo5Fe2PtbKKqFnFPoqpOTByteBzXrRkbRDGoCeZk7MiLBa+2L8Grj+Llkdh3p4+3n1REeilEQmOJdvJ6D48u6D3pNAXyjJhU1g6Kaqe1LREREptW2pvHXCVsO99AUirDiFBK8w11hioI5FI3aprErTCyeIMuvScZTKtw5ktwNl3XBYOjUEjwAfzaULJq+2ESmUUYkeIuLc/nnN68lHE1QmOOnssjPxi8+w5KKfA70dHF24YKp76RwAXQdk+QV141N7kREROS0NHb2c7hnkCwfLK4MUpE3Tf3nk1ZUFVKWl01lYS4+n9E9EGVVdSFVk4xkOZnqogAHOgbGlNUUB5TczQWBEsCAUUleoEh95yTtpH2CFw6HeWxXJ//++C52HOln7YICPnT1Cp74yCU09cXIy8mZng/dmnXeHbveJm+5oAoWnDP11xUREclwmxu7uPv3e3l06xHycny884IGbjl7Ictrpu/CfP3CIq5fW8sPXzhENO64aGkZbz5n4Sn30z+jtpDGrjBN3WEAKgpyTjhFgsySkkWw4Cxo3uzNX5edB0suV4InaSftE7xtrWH+6RfbONwTAWBLUx9f+PVOam9dD/hYWTNN3wDmV8C6N0PoCLjkKJqBoul5bRERkQwViUR4aHMLD21uAaAnHOfLv9vDypqCaU3whhJQX5bHx69bTcI5DGjvG8I5h9nJ99Mvy8/lDRtqae0dxDmoLMylcKrdQGR6ZAVg2TVQtQZiYW8UTY2FIGko7RO8zoHocHJ31I4j/fSEYyTcJBudrpwCKNe3QCIiItOlOTTESwe7xpVvbuzhTWcvnLb9NHUNMBCNw6jpag93hxkYipOfe2qXS/k5WSyp0PXAnJSVDaX1qY5CZEalfYJ3zqJ8fvS+i4g7qC/L5T3/+Tt6ornk5/jJzvKnOjwREZGUOdQ+wJG+QbL9vjnbjLA0L8CyqgKe3z82yVt2GnPUHU9FYQCaQ2PKSvKyyc1S3zkRmV/SOsHb197Lz145wveeO0BoMMZ1Z9bw+bddwiuHe1lemoXlTG8HbRERkfli075Ovvq7PTyxp40FJXm897IlbFxVQWXJKY4mOMOK87K55aw6tjR2s6XJS8BuXFfLhvrpHZZ+WWU+e1r7OJzsO1eQm8X5DWUaHEVE5p20TvC2NoX4l1/tHF6+/8XDVBUFeP8lC8kKBMjLSeu3LyIiMqHDPX184+n9/Gp7KwB72vr5uwe3sviPz59zCR7ABUvLufPW9bR0D5Ll91FfksfS6um9g1eSl8ONG2pp6RkkHndUFuZQmq+Jq0Vk/knrDOelg93jyp7f38lbz6ujoSit37qIiMikWrqjbNrXOaYsEnccaBvgsuUpCuoE1i4oYe00zGp0PPk5WdPe9FNEZLaldbuDxWXjv4VcXJ5HYZ763omISOYqCvhYXD7+HFlZpDtWIiLzXUoSPDO7zsx2mNluM/vkTO3n7MUlXL2qYnh5WWU+t5xdR/k0T44qIiIyXWbjHLmiupj3XLqY8vzs5D7hHRfUs1QjQYuIzHuz3k7RzPzAvwOvAxqB583sQefca9O9r3V1JXziutW888JBovE4C4rz2FA/N0cJExERmc1z5NXLS/mPd53Hkd4whbnZLC4P0qCh/UVE5r1UdES7ANjtnNsLYGbfB24Cpv3kBbC6tpjVtdM70paIiMgMmbVzZDAY5PyG4HS/rIiIpFgqmmjWAYdGLTcmy8YwszvMbJOZbWpra5u14ERERFLohOdInR9FROR4UpHg2QRlblyBc3c7585zzp1XWVk5C2GJiIik3AnPkTo/iojI8aQiwWsEFo1aXgg0pSAOERGRuUbnSBERmZJUJHjPAyvMbImZ5QC3AQ+mIA4REZG5RudIERGZklkfZMU5FzOzDwGPAn7gHufc1tmOQ0REZK7ROVJERKYqFaNo4px7GHg4FfsWERGZy3SOFBGRqUjJROciIiIiIiIy/ZTgiYiIiIiIpAlzbtwMBXOOmbUBB6bwEhVA+zSFM9/pWIzQsRhLx2OEjsWI2T4Wi51zGvv/JE1wfiwGeiZZ/XjPzac6f7z3Mdf2cbqvcyrbney6J1rvdJ9X3ZmZ/cxG3TnZ9ae6jj57pm8fJ3eOdM6l/Q+wKdUxzJUfHQsdCx0PHQsdi/T9Ae4+zefmzd/5eO9jru3jdF/nVLY72XVPtN7pPq+6MzP7mY26c7LrT3UdffbM/j7URFNERCR9/Ow0n5tPZuN9TNc+Tvd1TmW7k133ROtN9fn5YLbew3TsZzbqzsmuP9V10qHuwDz67JkXTTSnysw2OefOS3Ucc4GOxQgdi7F0PEboWIzQscgM+jvL6VLdkalQ/ZkZmXIH7+5UBzCH6FiM0LEYS8djhI7FCB2LzKC/s5wu1R2ZCtWfGZARd/BEREREREQyQabcwRMREREREUl7SvBERERERETSRFoneGZ2nZntMLPdZvbJVMeTCma238xeNbOXzWxTsqzMzH5lZruSv0tTHedMMLN7zKzVzLaMKpvwvZvnS8m6stnMzkld5NNvkmPxaTM7nKwbL5vZDaOe++vksdhhZq9PTdQzw8wWmdnjZrbNzLaa2Z8nyzOubhznWGRk3RAREUkHaZvgmZkf+HfgemAN8HYzW5PaqFLmaufcWaNGKfok8JhzbgXwWHI5Hd0LXHdM2WTv/XpgRfLnDuArsxTjbLmX8ccC4AvJunGWc+5hgOT/yW3Amcltvpz8f0oXMeAjzrkzgIuADybfcybWjcmOBWRm3RAREZn30jbBAy4Adjvn9jrnhoDvAzelOKa54ibgvuTj+4A3pTCWGeOc+z3QeUzxZO/9JuCbzvMMUGJmtbMT6cyb5FhM5ibg+865iHNuH7Ab7/8pLTjnmp1zLyYfh4BtQB0ZWDeOcywmk9Z1Qzxmlm9m95nZ18zsnamOR+YXM1tqZl83s/tTHYvML2b2puTnzk/NbGOq45nP0jnBqwMOjVpu5PgXLunKAb80sxfM7I5kWbVzrhm8CzygKmXRzb7J3num1pcPJZsd3+Jm9gAABzZJREFU3jOqqW7GHAszawDOBp4lw+vGMccCMrxupJuJmmknyyfqynALcL9z7k+BN856sDLnnEr9SX6xfntqIpW55hTrzgPJz533AG9LQbhpI50TPJugLBPnhLjUOXcOXjOzD5rZFakOaI7KxPryFWAZcBbQDPy/ZHlGHAszKwB+BPyFc673eKtOUJZWx2OCY5HRdSNN3csxzbSP05VhISOJfHwWY5S5615Ovv6IjHYvp153/lfyeTlN6ZzgNQKLRi0vBJpSFEvKOOeakr9bgZ/gNac6crSJWfJ3a+oinHWTvfeMqy/OuSPOubhzLgF8jZGmdml/LMwsGy+h+Y5z7sfJ4oysGxMdi0yuG+lqkmbak3VlaMT720J6XyfISTrF+iMy7FTqTnJQs38CfnG0+4CcnnT+4H4eWGFmS8wsB29ggAdTHNOsSvajKDz6GNgIbME7Du9OrvZu4KepiTAlJnvvDwJ/lPxwuQjoOdpcL10d04/sZry6Ad6xuM3Mcs1sCd7gIs/NdnwzxcwM+DqwzTn3L6Oeyri6MdmxyNS6kYEma3L7Y+DNZvYV4GepCEzmhQnrj5mVm9l/AGeb2V+nJjSZ4yb77PmfwLXArWb2/lQEli6yUh3ATHHOxczsQ8CjgB+4xzm3NcVhzbZq4CfeNRxZwHedc4+Y2fPAD8zsduAg8JYUxjhjzOx7wFVAhZk1An8L3MnE7/1h4Aa8QSMGgD+e9YBn0CTH4iozOwuvid1+4H0AzrmtZvYD4DW8URY/6JxLp2ZalwLvAl41s5eTZZ8iM+vGZMfi7RlaNzLNhE1unXP9pFc9l5kxWf3pAHRxLsczWd35EvCl2Q4mHaVtggeQHNr74VTHkSrOub3AhgnKO4BrZj+i2eWce/skT4177845B3xwZiNKnUmOxdePs/5ngc/OXESp45x7golPLpBhdeM4x2LSz810rhsZSE1uZSpUf+R0qe7MsHRuoikiIiKTy/iuDDIlqj9yulR3ZpgSPBERkTSXbKb9NLDKzBrN7HbnXAw42pVhG/CDDOzKICdB9UdOl+pOapjX+khERERERETmO93BExERERERSRNK8ERERERERNKEEjyRGWJmnxr1uMTMPjAL+2wws3fM9H5EREREZG5Sgicycz416nEJMOMJHtAAKMETERERyVBpPQ+eyGwxswfw5nQJAHcBS4FgcvLorYAfWJZc/pVz7mNm9jHgrUAu8BPn3N+aWQPwCPAEcBHwCvAN4DNAFfBO59xzZvZpYBlQl9zvPzvnvoY3WfcZyf3cB/wyuX0O3hc6b3bO7ZrhwyEiIiIiKaJRNEWmgZmVOec6zSyIN7/LlcAB51xB8vkG4CHn3Nrk8kbgVuB9eBNNPwj8M3AQ2A2cjZcYPo+X5N0OvBH4Y+fcm5IJ3s14SWA+8BJwIbAS+Khz7g3J/fwr8Ixz7jvJuWb8zrnwzB4NEREREUkVNdEUmR4fNrNXgGfw7qitOMH6G5M/LwEvAqtHbbPPOfeqcy6Bl+Q95rxvYl7Fa4J51E+dc2HnXDvwOHDBBPt5GviUmX0CWKzkTkRE5gL1UxeZOUrwRKbIzK4CrgUuds5twEvaAifaDPhH59xZyZ/lzrmvJ5+LjFovMWo5wdhm1cfefh93O9459128O39h4FEz+4OTeEsiIiIzTf3URWaIEjyRqSsGupxzA2a2Gq/ZJEDUzLKTj0NA4ahtHgXea2ZHm3DWmVnVKe73JjMLmFk5cBVec84x+zGzpcBe59yX8JqBrj/FfYiIiEyJmT1gZi+Y2VYzu8PM7iTZT93MvoPXf3xZcvlzyW0+ZmbPm9lmM/tMsqzBzLab2X+a2RYz+46ZXWtmT5rZLjO7ILnep83sW2b2m2T5nyZDuRO4PLmfvzSzM83sueTyZjM7UesbkXlBg6yITN0jwPvNbDOwA6+ZJsDdwGYze9E5987kCWgL8IvkICtnAE+bGUAf8IdA/BT2+xzwc6Ae+L/OuSYzawNiyeai9+LdSfxDM4sCLcDfTfXNioiInKL3TtBP/UPOubNguJ/62lHLG/G6LVxAsp+6mV2B1099OfAW4I7ka70DuAyvtcqngDcl97meUf3UzeznwCcZ30/9rtH91GfyIIjMFiV4IlPknIsA10/w1G+BT4xab0yzEOfcXXgjbh5r7ah13jPq8f7RzwE7nXN3HPOaUeCaY17vH48Xv4iIyAz7sJndnHx8qv3UAQqS2xwk2U8dwMyG+6mb2YT91IGwmR3tp959zH6eBv7GzBYCP9Yo05Iu1ERTRERERGaE+qmLzD4leCLzkHPu0865z6c6DhERkRNQP3WRWaYmmiIiIiIyU9RPXWSWaaJzEREREUkbZvZpoE8tXSRTqYmmiIiIiIhImtAdPBERERERkTShO3giIiIiIiJpQgmeiIiIiIhImlCCJyIiIiIikiaU4ImIiIiIiKQJJXgiIiIiIiJp4v8DIzfeinID170AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, figsize=(15, 5))\n",
    "for ax in axes:\n",
    "    sns.scatterplot(\n",
    "        y=pivot.success, x=pivot.attempts, \n",
    "        hue=pivot.assign(\n",
    "            is_hacker=lambda x: x.index.isin(attacks.source_ip)\n",
    "        ).is_hacker,\n",
    "        ax=ax, alpha=0.5\n",
    "    )\n",
    "axes[1].set_xscale('log')\n",
    "plt.suptitle('successes vs. attempts by IP address')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Can a box plot show us outliers corresponding to the top right cluster in the previous scatter plots?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "attempts       AxesSubplot(0.125,0.125;0.352273x0.755)\n",
       "success     AxesSubplot(0.547727,0.125;0.352273x0.755)\n",
       "dtype: object"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x216 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pivot[['attempts', 'success']].plot(\n",
    "    kind='box', subplots=True, figsize=(10, 3),\n",
    "    title='stats per IP address'\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Rule-based Anomaly Detection\n",
    "We want to find the IP addresses with excessive amounts of attempts with low success rates and those attempting to log in with more unique usernames than we would deem normal (anomalies)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "hourly_ip_logs = log.assign(\n",
    "    failures=lambda x: np.invert(x.success)\n",
    ").groupby('source_ip').resample('1H').agg(\n",
    "    {'username': 'nunique', 'success':'sum', 'failures': 'sum'}\n",
    ").assign(\n",
    "    attempts=lambda x: x.success + x.failures,\n",
    "    success_rate=lambda x: x.success / x.attempts,\n",
    "    failure_rate=lambda x: 1 - x.success_rate\n",
    ").dropna().reset_index()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The data we will use for rule-based anomaly detection looks like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_ip</th>\n",
       "      <th>datetime</th>\n",
       "      <th>username</th>\n",
       "      <th>success</th>\n",
       "      <th>failures</th>\n",
       "      <th>attempts</th>\n",
       "      <th>success_rate</th>\n",
       "      <th>failure_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-01 04:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.8</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-01 05:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-07 03:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-29 18:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-29 19:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       source_ip            datetime  username  success  failures  attempts  \\\n",
       "0  1.138.149.116 2018-11-01 04:00:00         1      4.0       1.0       5.0   \n",
       "1  1.138.149.116 2018-11-01 05:00:00         1      1.0       0.0       1.0   \n",
       "2  1.138.149.116 2018-11-07 03:00:00         1      1.0       0.0       1.0   \n",
       "3  1.138.149.116 2018-11-29 18:00:00         1      2.0       0.0       2.0   \n",
       "4  1.138.149.116 2018-11-29 19:00:00         1      2.0       0.0       2.0   \n",
       "\n",
       "   success_rate  failure_rate  \n",
       "0           0.8           0.2  \n",
       "1           1.0           0.0  \n",
       "2           1.0           0.0  \n",
       "3           1.0           0.0  \n",
       "4           1.0           0.0  "
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hourly_ip_logs.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Percent Difference from Threshold\n",
    "A simple rule would be to check if values are a certain percentage or more different from some threshold. \n",
    "\n",
    "#### Bootstrapping\n",
    "In our case, the threshold will be an hourly baseline of login activity. We could use bootstrapping to calculate the baseline with random sample of size 10 for each hour:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_baselines(hourly_ip_logs, func, *args, **kwargs):\n",
    "    \"\"\"\n",
    "    Calculate hourly bootstrapped statistic per column.\n",
    "    \n",
    "    Parameters:\n",
    "        - hourly_ip_logs: Data to sample from.\n",
    "        - func: Statistic to calculate.\n",
    "        - args: Additional positional arguments for `func`\n",
    "        - kwargs: Additional keyword arguments for `func`\n",
    "    \n",
    "    Returns:\n",
    "        A pandas DataFrame of hourly bootstrapped statistics\n",
    "    \"\"\"\n",
    "    if isinstance(func, str):\n",
    "        func = getattr(pd.DataFrame, func)\n",
    "    return hourly_ip_logs.assign(\n",
    "        hour=lambda x: x.datetime.dt.hour\n",
    "    ).groupby('hour').apply(\n",
    "        lambda x: x.sample(10, random_state=0, replace=True).pipe(func, *args, **kwargs)\n",
    "    )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When we run our function, we get a bootstrapped hourly average to use as a baseline:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(24, 7)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "averages = get_baselines(hourly_ip_logs, 'mean')\n",
    "averages.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This technique however doesn't guarantee we won't mix any of the hacker activity into our baseline calculations. We might find it difficult to flag any activity at 4AM with this method. Our valid users may well be asleep, but we won't notice the attack with this baseline."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>username</th>\n",
       "      <th>success</th>\n",
       "      <th>failures</th>\n",
       "      <th>attempts</th>\n",
       "      <th>success_rate</th>\n",
       "      <th>failure_rate</th>\n",
       "      <th>hour</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hour</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.8</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.8</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>14.9</td>\n",
       "      <td>4.9</td>\n",
       "      <td>22.0</td>\n",
       "      <td>26.9</td>\n",
       "      <td>0.893439</td>\n",
       "      <td>0.106561</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      username  success  failures  attempts  success_rate  failure_rate  hour\n",
       "hour                                                                         \n",
       "0          1.0      1.3       0.0       1.3      1.000000      0.000000   0.0\n",
       "1          1.0      1.0       0.0       1.0      1.000000      0.000000   1.0\n",
       "2          1.0      1.8       0.0       1.8      1.000000      0.000000   2.0\n",
       "3          1.0      1.5       0.0       1.5      1.000000      0.000000   3.0\n",
       "4         14.9      4.9      22.0      26.9      0.893439      0.106561   4.0"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "averages.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Trimming\n",
    "We need to remove some of the outliers for better baselines. Let's write a function to trim values beyond a given quantile:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "def trim(x, quantile):\n",
    "    \"\"\"Remove rows with entries for the username, attempts, or failure_rate columns above a given quantile.\"\"\"\n",
    "    mask = ((x.username <= x.username.quantile(quantile))\\\n",
    "        & (x.attempts <= x.attempts.quantile(quantile))\\\n",
    "        & (x.failure_rate <= x.failure_rate.quantile(quantile)))\n",
    "    return x[mask]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This function can be used when we run `apply()` after a `groupby()`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "trimmed_hourly_logs = hourly_ip_logs.assign(\n",
    "    hour=lambda x: x.datetime.dt.hour\n",
    ").groupby('hour').apply(\n",
    "    lambda x: trim(x, 0.95)\n",
    ").drop(columns='hour').reset_index().iloc[:,2:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_ip</th>\n",
       "      <th>datetime</th>\n",
       "      <th>username</th>\n",
       "      <th>success</th>\n",
       "      <th>failures</th>\n",
       "      <th>attempts</th>\n",
       "      <th>success_rate</th>\n",
       "      <th>failure_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-01 04:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.8</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-01 05:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-07 03:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-29 18:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.138.149.116</td>\n",
       "      <td>2018-11-29 19:00:00</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       source_ip            datetime  username  success  failures  attempts  \\\n",
       "0  1.138.149.116 2018-11-01 04:00:00         1      4.0       1.0       5.0   \n",
       "1  1.138.149.116 2018-11-01 05:00:00         1      1.0       0.0       1.0   \n",
       "2  1.138.149.116 2018-11-07 03:00:00         1      1.0       0.0       1.0   \n",
       "3  1.138.149.116 2018-11-29 18:00:00         1      2.0       0.0       2.0   \n",
       "4  1.138.149.116 2018-11-29 19:00:00         1      2.0       0.0       2.0   \n",
       "\n",
       "   success_rate  failure_rate  \n",
       "0           0.8           0.2  \n",
       "1           1.0           0.0  \n",
       "2           1.0           0.0  \n",
       "3           1.0           0.0  \n",
       "4           1.0           0.0  "
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hourly_ip_logs.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our trimmed baseline doesn't have really large values for 4AM anymore:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>username</th>\n",
       "      <th>success</th>\n",
       "      <th>failures</th>\n",
       "      <th>attempts</th>\n",
       "      <th>success_rate</th>\n",
       "      <th>failure_rate</th>\n",
       "      <th>hour</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hour</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.7</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.7</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.6</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.6</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      username  success  failures  attempts  success_rate  failure_rate  hour\n",
       "hour                                                                         \n",
       "0          1.0      1.2       0.0       1.2           1.0           0.0   0.0\n",
       "1          1.0      1.0       0.0       1.0           1.0           0.0   1.0\n",
       "2          1.0      1.7       0.0       1.7           1.0           0.0   2.0\n",
       "3          1.0      1.6       0.0       1.6           1.0           0.0   3.0\n",
       "4          1.0      1.3       0.0       1.3           1.0           0.0   4.0"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "averages = get_baselines(trimmed_hourly_logs, 'mean')\n",
    "averages.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we need a function to determine when our thresholds are exceeded. Our threshold will be some percentage of the baseline:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "def pct_change_threshold(hourly_ip_logs, baselines, pcts=None):\n",
    "    \"\"\"\n",
    "    Return flagged IP addresses based on thresholds.\n",
    "    \n",
    "    Parameters:\n",
    "        - hourly_ip_logs: Aggregated hourly data per IP address.\n",
    "        - baselines: Hourly baselines per column in data.\n",
    "        - pcts: Dictionary of custom percentages per column for\n",
    "                calculating upper bound thresholds (baseline * pct).\n",
    "                If not provided, pct will be 1.\n",
    "    \n",
    "    Returns:\n",
    "        Pandas series containing the IP addresses flagged.\n",
    "    \"\"\"\n",
    "    pcts = {} if not pcts else pcts\n",
    "\n",
    "    return hourly_ip_logs.assign(\n",
    "        hour=lambda x: x.datetime.dt.hour\n",
    "    ).join(\n",
    "        baselines, on='hour', rsuffix='_baseline'\n",
    "    ).assign(\n",
    "        too_many_users=lambda x: x.username_baseline \\\n",
    "            * pcts.get('username', 1) <= x.username,\n",
    "        too_many_attempts=lambda x: x.attempts_baseline \\\n",
    "            * pcts.get('attempts', 1) <= x.attempts,\n",
    "        high_failure_rate=lambda x: x.failure_rate_baseline \\\n",
    "            * pcts.get('failure_rate', 1) <= x.failure_rate\n",
    "    ).query(\n",
    "        'too_many_users and too_many_attempts and high_failure_rate'\n",
    "    ).source_ip.drop_duplicates()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's see how many IP addresses get flagged for being 25% greater than the mean baselines for distinct usernames, number of attempts, and failure rate:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "40"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pct_from_mean_ips = pct_change_threshold(\n",
    "    hourly_ip_logs, averages, \n",
    "    {key: 1.25 for key in ['username', 'attempts', 'failure_rate']}\n",
    ")\n",
    "pct_from_mean_ips.nunique()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Tukey Fence\n",
    "Another strategy is to use the upper bound of the Tukey fence. The multiplier on the IQR is a parameter we will want to tune:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "def tukey_fence_test(trimmed_data, logs, k, pct=None):\n",
    "    \"\"\"\n",
    "    See which IP addresses get flagged with a Tukey Fence with\n",
    "    multiplier k and optional percent differences.\n",
    "    \n",
    "    Parameters: \n",
    "        - trimmed_data: The data to use to calculate the baselines\n",
    "        - logs: The data to test\n",
    "        - k: The Tukey fence multiplier\n",
    "        - pct: Dictionary of percentages per column for use with `pct_change_threshold()`\n",
    "        \n",
    "    Returns:\n",
    "        A pandas Series of flagged IP addresses\n",
    "    \"\"\"\n",
    "    q3 = get_baselines(trimmed_data, 'quantile', .75).drop(columns=['hour'])\n",
    "    q1 = get_baselines(trimmed_data, 'quantile', .25).drop(columns=['hour'])\n",
    "    iqr = q3 - q1\n",
    "    upper_bound = (q3 + k*iqr).reset_index()\n",
    "    return pct_change_threshold(logs, upper_bound, pct)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's see what gets flagged with a threshold of 5% greater than the Tukey fence upper bound using a multiplier of 3:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "tukey_fence_flags = tukey_fence_test(\n",
    "    trimmed_hourly_logs, hourly_ip_logs, k=3, \n",
    "    pct={key: 1.05 for key in ['username', 'attempts', 'failure_rate']}\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We once again use `nunique()` to see the number of items flagged:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "39"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tukey_fence_flags.nunique()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Z-score\n",
    "We can use the Z-score to flag values beyond a certain number of standard deviations above the mean:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "32"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def z_score_test(trimmed_data, logs, cutoff):\n",
    "    \"\"\"\n",
    "    See which IP addresses get flagged with a Z-score greater than\n",
    "    or equal to a cutoff value.\n",
    "    \n",
    "    Parameters: \n",
    "        - trimmed_data: The data to use to calculate the baselines\n",
    "        - logs: The data to test\n",
    "        - cutoff: Flag row when z_score >= cutoff\n",
    "        \n",
    "    Returns:\n",
    "        A pandas Series of flagged IP addresses\n",
    "    \"\"\"\n",
    "    std_dev = get_baselines(trimmed_data, 'std').drop(columns=['hour'])\n",
    "    averages = get_baselines(trimmed_data, 'mean').drop(columns=['hour'])\n",
    "\n",
    "    return logs.assign(\n",
    "        hour=lambda x: x.datetime.dt.hour\n",
    "    ).join(\n",
    "        std_dev.join(\n",
    "            averages, \n",
    "            lsuffix='_std', \n",
    "            rsuffix='_mean'\n",
    "        ),\n",
    "        on='hour'\n",
    "    ).assign(\n",
    "        too_many_users=lambda x: (\n",
    "            x.username - x.username_mean\n",
    "        )/x.username_std >= cutoff,\n",
    "        too_many_attempts=lambda x:  (\n",
    "            x.attempts - x.attempts_mean\n",
    "        )/x.attempts_std >= cutoff,\n",
    "        high_failure_rate=lambda x:  (\n",
    "            x.failure_rate - x.failure_rate_mean\n",
    "        )/x.failure_rate_std >= cutoff\n",
    "    ).query(\n",
    "        'too_many_users and too_many_attempts and high_failure_rate'\n",
    "    ).source_ip.drop_duplicates()\n",
    "\n",
    "z_score_ips = z_score_test(trimmed_hourly_logs, hourly_ip_logs, 3)\n",
    "z_score_ips.nunique()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluating Methods\n",
    "This is a classification problem with 4 outcomes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Confusion Matrix')"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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GLPTx3gK9P5ymjFmHNZYaEtxjXaAlZQ/AJoAW3JYxUPAaKwDgVCsDgLX4GBVmYgMBP5KNtezGGMWAe+4nr4nIg2d2v7VSlxZWSmllHKMnrkopZRynCYXpZRSjtPkopRSynGaXJRSSjkuJNABBMrWrVu1J4MqkOrUqZNzIaUCpESJEl6NmKBnLkoppRynyUUppZTjNLkopZRynCYXpZRSjtPkopRSynGaXJRSSjlOk4tSSinHaXJRSinlOE0uSimlHKfJRSmllOM0uSillHKcJhellFKO0+SilFLKcZpclFJKOU6Ti1JKKcdpclFKKeU4TS5KKaUcp8lFKaWU4zS5KKWUcpwmF6WUUo7T5KKUUspxmlyUUko5TpOLUkopx2lyUUop5ThNLkoppRynyUUppZTjNLkopZRynCYXpZRSjtPkopRSynGaXJRSSjlOk4tSSinHaXJRSinlOE0uSimlHKfJRSmllOM0uSillHKcJhellFKO0+SilFLKcZpclFJKOS4k0AGogqt///6cPHkyx3LDhw/ntddeSzMtKCiIyMhImjRpQo8ePShfvnxehamKsKFDh/L9999nOT86Opq5c+dm+HyGhIRQoUIF2rZty9NPP01EREReh1rk6JmLyhOpqamcOXOGpUuX8sorr3D27NlAh6SULTk5maNHjzJjxgz69u3LpUuXAh3SVUfPXFSWxo0bZz/eunWrffTXrl07nnnmmTTz3NzzLly4wMcff8zq1as5c+YMP/zwAz169Mi/4FWRM3HiRG6++eZsyzz11FP079+fU6dO8dJLLxEdHc3evXv54YcfuO+++/Ip0qJBz1xUnihZsiQPPPCA/Xzv3r0BjEaptMqXL0/v3r3t59u3bw9gNFcnTS4qX4hIoENQKg1jjP1YP5/O02oxlScuXLjAnDlz7Od16tQJYDSqKOjXr1+a5+3atWP06NGZlj116hRTp061n1933XV5GltRpMlFOWrp0qUsXbo0zbTIyEg6d+4cmICU8jB+/HjGjx+fZlqtWrW4++67AxTR1UuTi8oTQUFBREREcOONN/LII49QtmzZQIekrnLeNOi7BQcHU758edq0acOAAQMICwvL4+iKHk0uylHpe5IpVZC4e4upvKcN+koppRynyUUppZTjNLkopZRynHj29S5Ktm7dWjRfuCrwtNu2KshKlCjh1UVBBaJB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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib.colors import ListedColormap\n",
    "\n",
    "ax = sns.heatmap(\n",
    "    np.array([[1, 0], [0, 1]]), cbar=False,cmap=ListedColormap(['whitesmoke', 'lightgray']),\n",
    "    annot=np.array([\n",
    "        ['TP\\n(True Positive)', 'FP\\n(False Positive)'], \n",
    "        ['FN\\n(False Negative)', 'TN\\n(True Negative)']\n",
    "    ]), fmt=\"\", annot_kws={'size': 15, 'weight': 'bold'}\n",
    ")\n",
    "ax.set_xticklabels([True, False])\n",
    "ax.set_xlabel('Actual', fontsize=18)\n",
    "ax.set_yticklabels([True, False], rotation=0)\n",
    "ax.set_ylabel('Predicted', fontsize=18)\n",
    "ax.set_title('Confusion Matrix', fontsize=25)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can write a function to calculate the metrics of the confusion matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate(alerted_ips, attack_ips, log_ips):\n",
    "    \"\"\"\n",
    "    Calculate true positives (TP), false positives (FP), \n",
    "    true negatives (TN), and false negatives (FN) for \n",
    "    IP addresses flagged as suspicious.\n",
    "    \n",
    "    Parameters:\n",
    "        - alerted_ips: Pandas series of flagged IP addresses\n",
    "        - attack_ips: Pandas series of attacker IP addresses\n",
    "        - log_ips: Pandas series of all IP addresses seen\n",
    "    \n",
    "    Returns:\n",
    "        Tuple of form (TP, FP, TN, FN)\n",
    "    \"\"\"\n",
    "    tp = alerted_ips.isin(attack_ips).sum()\n",
    "    tn = log_ips[log_ips.isin(alerted_ips)].isin(attack_ips).sum()\n",
    "    fp = np.invert(\n",
    "        log_ips[log_ips.isin(alerted_ips)].isin(attack_ips)\n",
    "    ).sum()\n",
    "    fn = np.invert(\n",
    "        log_ips[log_ips.isin(attack_ips)].isin(alerted_ips)\n",
    "    ).sum()\n",
    "    return tp, fp, tn, fn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using, partials we can reduce our typing later by providing the arguments only once:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# make this easier to call\n",
    "from functools import partial\n",
    "scores = partial(evaluate, attack_ips=attacks.source_ip, log_ips=pivot.index)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Percent Difference from Mean\n",
    "Let's see how well the percent difference from the mean method did. We can use `value_counts()` to calculate precision for us:\n",
    "\n",
    "$$ precision = \\frac{TP}{TP + FP} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True     0.975\n",
       "False    0.025\n",
       "Name: source_ip, dtype: float64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pct_from_mean_ips.isin(attacks.source_ip).value_counts(\n",
    "    normalize=True\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using our partial, we get all the components of the confusion matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "tp, fp, tn, fn = scores(pct_from_mean_ips)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can use these to calculate recall:\n",
    "\n",
    "$$ recall = \\frac{TP}{TP + FN} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# recall \n",
    "tp / (tp + fn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Other metrics of interest include:\n",
    "\n",
    "$$ accuracy = \\frac{TP + TN}{TP + FP + TN + FN} $$\n",
    "\n",
    "$$ F_1 score = \\frac{2 \\times precision \\times recall}{precision + recall} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "def classification_stats(tp, fp, tn, fn):\n",
    "    \"\"\"Calculate accuracy, precision, recall, and F1-score\"\"\"\n",
    "    recall = tp / (tp + fn)\n",
    "    precision = tp / (tp + fp)\n",
    "    f1_score = 2 * precision * recall / (precision + recall)\n",
    "    return {\n",
    "        'accuracy' : (tp + tn) / (tp + fp + tn + fn),\n",
    "        'precision' : precision,\n",
    "        'recall' : recall,\n",
    "        'F1-score' : f1_score\n",
    "    }"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Percent difference from the mean using trimmed baselines performs well all around:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'accuracy': 0.9873417721518988,\n",
       " 'precision': 0.975,\n",
       " 'recall': 1.0,\n",
       " 'F1-score': 0.9873417721518987}"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "classification_stats(tp, fp, tn, fn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Percent Difference from the Median\n",
    "We don't need to use the trimmed data here because the median is robust to outliers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'accuracy': 0.9873417721518988,\n",
       " 'precision': 0.975,\n",
       " 'recall': 1.0,\n",
       " 'F1-score': 0.9873417721518987}"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "medians = get_baselines(hourly_ip_logs, 'median')\n",
    "pct_from_median_ips = pct_change_threshold(\n",
    "    hourly_ip_logs, medians, \n",
    "    {key: 1.25 for key in ['username', 'attempts', 'failure_rate']}\n",
    ")\n",
    "tp, fp, tn, fn = scores(pct_from_median_ips)\n",
    "classification_stats(tp, fp, tn, fn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Comparing Methods\n",
    "We can use a `DataFrame` to easily compare the methods we tried. All perform well, which one we use in practice will depend on the cost of false negatives vs. false positives:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>means</th>\n",
       "      <th>medians</th>\n",
       "      <th>tukey fence</th>\n",
       "      <th>z-scores</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>F1-score</th>\n",
       "      <td>0.987342</td>\n",
       "      <td>0.987342</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.901408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>accuracy</th>\n",
       "      <td>0.987342</td>\n",
       "      <td>0.987342</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.901408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>precision</th>\n",
       "      <td>0.975000</td>\n",
       "      <td>0.975000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>recall</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.820513</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              means   medians  tukey fence  z-scores\n",
       "F1-score   0.987342  0.987342          1.0  0.901408\n",
       "accuracy   0.987342  0.987342          1.0  0.901408\n",
       "precision  0.975000  0.975000          1.0  1.000000\n",
       "recall     1.000000  1.000000          1.0  0.820513"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame({\n",
    "    method : classification_stats(*scores(ips)) \\\n",
    "    for method, ips in {\n",
    "        'means' : pct_from_mean_ips,\n",
    "        'medians' : pct_from_median_ips,\n",
    "        'tukey fence' : tukey_fence_flags,\n",
    "        'z-scores' : z_score_ips\n",
    "    }.items()\n",
    "})"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
